{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SQLalchemy is not installed. No support for SQL output.\n"
     ]
    }
   ],
   "source": [
    "qpath = r'../../' # path to quetzal here\n",
    "data = r'inputs/'\n",
    "import sys\n",
    "sys.path.insert(0, qpath)\n",
    "\n",
    "# import class\n",
    "from quetzal.io.gtfs_reader import importer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Read GTFS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20200310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20200310\n",
       "5        num_routes             82\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes              0\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed = importer.GtfsImporter(path=data + r'bilbao.zip', dist_units='m')\n",
    "feed = feed.clean()\n",
    "feed.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>type</th>\n",
       "      <th>message</th>\n",
       "      <th>table</th>\n",
       "      <th>rows</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>warning</td>\n",
       "      <td>Repeated pair (trip_id, departure_time)</td>\n",
       "      <td>stop_times</td>\n",
       "      <td>[128, 4087, 4101, 4115, 4129, 4143, 4157, 4171...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      type                                  message       table  \\\n",
       "0  warning  Repeated pair (trip_id, departure_time)  stop_times   \n",
       "\n",
       "                                                rows  \n",
       "0  [128, 4087, 4101, 4115, 4129, 4143, 4157, 4171...  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.validate()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF9mOWY3ZjdhNjcxNWM0ZGE4OWI3YjQyMzA3YTE1MWUyNCB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9NYXJrZXJDbHVzdGVyLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIvPgo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Y5ZjdmN2E2NzE1YzRkYTg5YjdiNDIzMDdhMTUxZTI0IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcF9mOWY3ZjdhNjcxNWM0ZGE4OWI3YjQyMzA3YTE1MWUyNCA9IEwubWFwKAogICAgICAgICAgICAgICAgIm1hcF9mOWY3ZjdhNjcxNWM0ZGE4OWI3YjQyMzA3YTE1MWUyNCIsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICAgICAgICAgICAgICB6b29tOiAxLAogICAgICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIHByZWZlckNhbnZhczogZmFsc2UsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAKCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfODgzM2I3ZTIyZjI1NGExZWFiODVmNThlN2I3MTc3Y2EgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICJodHRwczovL2NhcnRvZGItYmFzZW1hcHMte3N9Lmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9hbGwve3p9L3t4fS97eX0ucG5nIiwKICAgICAgICAgICAgICAgIHsiYXR0cmlidXRpb24iOiAiXHUwMDI2Y29weTsgXHUwMDNjYSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIlx1MDAzZU9wZW5TdHJlZXRNYXBcdTAwM2MvYVx1MDAzZSBjb250cmlidXRvcnMgXHUwMDI2Y29weTsgXHUwMDNjYSBocmVmPVwiaHR0cDovL2NhcnRvZGIuY29tL2F0dHJpYnV0aW9uc1wiXHUwMDNlQ2FydG9EQlx1MDAzYy9hXHUwMDNlLCBDYXJ0b0RCIFx1MDAzY2EgaHJlZiA9XCJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zXCJcdTAwM2VhdHRyaWJ1dGlvbnNcdTAwM2MvYVx1MDAzZSIsICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwgIm1heE5hdGl2ZVpvb20iOiAxOCwgIm1heFpvb20iOiAxOCwgIm1pblpvb20iOiAwLCAibm9XcmFwIjogZmFsc2UsICJvcGFjaXR5IjogMSwgInN1YmRvbWFpbnMiOiAiYWJjIiwgInRtcyI6IGZhbHNlfQogICAgICAgICAgICApLmFkZFRvKG1hcF9mOWY3ZjdhNjcxNWM0ZGE4OWI3YjQyMzA3YTE1MWUyNCk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGZhc3RfbWFya2VyX2NsdXN0ZXJfNWZiZGEyZjVjYzdjNGU0OWI3NDI1MGEyYTZhNGIyZGMgPSAoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIHZhciBjYWxsYmFjayA9ICAgICBmdW5jdGlvbiAocm93KSB7CiAgICAgICAgdmFyIGltYXJrZXI7CiAgICAgICAgbWFya2VyID0gTC5jaXJjbGVNYXJrZXIobmV3IEwuTGF0TG5nKHJvd1swXSwgcm93WzFdKSwKICAgICAgICAgICAgeydyYWRpdXMnOiA4LCAnZmlsbCc6ICd0cnVlJywgJ2NvbG9yJzogJyNmYzhkNjInLCAnd2VpZ2h0JzogMSwgJ2ZpbGxPcGFjaXR5JzogMC43NX0KICAgICAgICApOwogICAgICAgIG1hcmtlci5iaW5kUG9wdXAoCiAgICAgICAgICAgICc8Yj5TdG9wIG5hbWU8L2I+OiAnICsgcm93WzJdICsgJzxicj4nICsKICAgICAgICAgICAgJzxiPlN0b3AgSUQ8L2I+OiAnICsgcm93WzNdCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gbWFya2VyOwogICAgfTsKICAgIDsKCiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IFtbNDMuMjY2MjQxMzE0Mjk5MDgsIC0yLjkyMjg4Mzg0ODE2NDQ5NjUsICJBbnNlbG1hIGRlIFNhbGNlcyAoMikiLCAiMjIwMSJdLCBbNDMuMjY2Njk4NTgyMzk4MzcsIC0yLjkxOTU2MDgyMDI4NjUzMTMsICJUcmF1a28gKDE0KSIsICIyNDE3Il0sIFs0My4yNTk0MDI4NzY1ODcxNzQsIC0yLjkwMDMwMTMyNjk5NjQxNTUsICJLZXBhIEVuYmVpdGlhIFwiVXJyZXR4aW5kb3JyYVwiIiwgIjMxMDMiXSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5LCAiR3JlZ29yaW8gbGEgUmV2aWxsYSAxIiwgIjYyMDkiXSwgWzQzLjI2MTU5MTQzOTA0MDQyLCAtMi45NDAwMzI0NTAxOTA3NTYsICJHcmVnb3JpbyBsYSBSZXZpbGxhIDE3IiwgIjYyMTAiXSwgWzQzLjI0ODkyMjc4NDMzNDExLCAtMi45NDQ3OTQ1Mzk1MTY2OTkyLCAiWGFsYmFkb3IgLyAoQWxoXHUwMGYzbmRpZ2EpIiwgIjczMTciXSwgWzQzLjI0ODg3NTI3NDUwMTg1NiwgLTIuOTQ0NzUxNDk4Mzg0Mjc2NiwgIlhhbGJhZG9yIC8gQWxoXHUwMGYzbmRpZ2EiLCAiNzMxOCJdLCBbNDMuMjUwMTcyOTI5OTU0NzYsIC0yLjk0NDc3MDE0NzY4NDg0NjcsICJYYWxiYWRvciAvIEYuQmFsZGV6YXRlIiwgIjczMTkiXSwgWzQzLjI0Njk4ODM4MzEyNTg5NSwgLTIuOTUwNjAyMzI0MjkxODU5NSwgIkFybW90eGFiaWRlYSIsICI3NTExIl0sIFs0My4yNTYyMjc5NDM5NDM1NjQsIC0yLjk0NjQ1Mzg3ODA4MDU2OCwgIlVya2lvbGEgMSIsICI4MTE4Il0sIFs0My4yNjI1Mjc5MzE0NzQ0NCwgLTIuOTQ3MzQyNjU2NzUwNjc2LCAiVXJxdWlqbyAxMDAiLCAiODEyNCJdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1NywgIkwuIEFndWlycmUgMTQ5IiwgIjExMDEiXSwgWzQzLjI3ODgzMzM1MjA5NDg0LCAtMi45NjExOTQ0MDgwMzk4NDM2LCAiTC4gQWd1aXJyZSAxNTQiLCAiMTEwMiJdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODUsICJMLiBBZ3VpcnJlIDE2MSIsICIxMTAzIl0sIFs0My4yODE3MDUzMDI5NDA3MTUsIC0yLjk2MjgxMjg1MzU0Nzg5NywgIkwuIEFndWlycmUgMTcyIC8gTGV2YW50ZSBwbC4iLCAiMTEwNCJdLCBbNDMuMjgxNzMxNzI5NjIzMDU0LCAtMi45NjMwMjUxMjQwNTIxMTA0LCAiTC4gQWd1aXJyZSAxNzkiLCAiMTEwNSJdLCBbNDMuMjgzNzk3MzM1Nzc2MzU2LCAtMi45NjI1OTYxMTQ1NDc5NzA3LCAiT3JpeGUgNTQiLCAiMTEwNiJdLCBbNDMuMjg0MDU2MTY2NDE3NTcsIC0yLjk2NTQ0MzE0MTQ0ODg1NiwgIkkuIEVsbGFjdXJpYSAvIEVsb3JyaWV0YSIsICIxMjAxIl0sIFs0My4yNzQ3MTk2MTQwMzY1NiwgLTIuOTU4NTg5NTcxNDUyMjExMiwgIkwuIEFndWlycmUgKDg5KSAvIFNhcnJpa28iLCAiMTMwMSJdLCBbNDMuMjczMzA0OTI4MDIyNiwgLTIuOTU1MzM0ODMxNTEzMTkxMywgIkRvbiBCb3NjbyAvIFVnYXJ0ZWtvIiwgIjEzMDIiXSwgWzQzLjI3NTg3MjEyMzgzMTAyLCAtMi45NTk3NjQ5Mzc4Mjg2MTM3LCAiTC4gQWd1aXJyZSAxMzUgLyAoUmVzaWRlbmNpYSkiLCAiMTMwMyJdLCBbNDMuMjc2Nzc2MDE1MzUyMDU2LCAtMi45NjAwNTYxMDUxMDIzNTM3LCAiTC4gQWd1aXJyZSAxNDAgLyBSZXNpZGVuY2lhIiwgIjEzMDQiXSwgWzQzLjI3Mzc2OTIyMzcyMzQzNCwgLTIuOTU3NTQ4MTg5MDMzNDU3NCwgIkwuIEFndWlycmUgODEiLCAiMTMwNSJdLCBbNDMuMjczODQwOTQxNjMwODIsIC0yLjk1NTQxMjcwNzUxMTE1NjMsICJVZ2FydGVrbyAvIEliYXJyZWtvbGFuZGEiLCAiMTMwNiJdLCBbNDMuMjc0MTQwNDIwNzkzNTcsIC0yLjk0OTc0MTM5MTg3MzAzLCAiQXJhbmVrbyAoMjIpIiwgIjE0MDEiXSwgWzQzLjI3MDA3NDc3MjgzMzUxLCAtMi45NDY5NzEyNTgyMTE4MzMzLCAiQmxhcyBkZSBPdGVybyAoMjMpIC8gQW5idWxhdG9yaW9hIiwgIjE0MDIiXSwgWzQzLjI2OTgyNTU4ODEyNjEsIC0yLjk1MTgxNDE3MTg3NjM1MzMsICJCbGFzIGRlIE90ZXJvICg1NykiLCAiMTQwMyJdLCBbNDMuMjY5MTY2NDc1Mjk0Mjg0LCAtMi45NDM2MTc1ODc0MDcwNTYsICJCb3Rpa2EgWmFoYXJyYSAvIChILmRlIGxhIFRvcnJlKSIsICIxNDA0Il0sIFs0My4yNjk3NjExODQ3NzAyOCwgLTIuOTQwNzE5OTAwNTA1NDM2LCAiQm90aWthIFphaGFycmEgLyBEZXVzdHVrbyBadWJpYSIsICIxNDA1Il0sIFs0My4yNjkyNjQ5NDAxMjQzNiwgLTIuOTQzNjY1ODg4ODIyNzg0LCAiQm90aWthIFphaGFycmEgLyBILmRlIGxhIFRvcnJlIiwgIjE0MDciXSwgWzQzLjI2OTk4MjIxNTk2MzAxLCAtMi45NDAzMjU1MTE0NjY5Njc1LCAiQm90aWthIFphaGFycmEgMSIsICIxNDA4Il0sIFs0My4yNzA5NzIxNzgzMzM1NSwgLTIuOTQwODU3NDI3MjA0Mjc0NSwgIkhlcm1hbm9zIEFndWlycmUgLyBVbmliZXJ0c2l0YXRlYSIsICIxNDEwIl0sIFs0My4yNzM2NTIyNDAwMDE3MjQsIC0yLjk1NDQyNzg1MTkyNzc1NDUsICJJYmFycmVrb2xhbmRhIDE5IiwgIjE0MTEiXSwgWzQzLjI3MjcxMDQyMjM1OTY1LCAtMi45NTU0MzUxMjI0MzI1MzMsICJEb24gQm9zY28gLyAoVWdhcnRla28pIiwgIjE0MTIiXSwgWzQzLjI3MTcxNjU0NzA4NzcwNiwgLTIuOTQ0OTM1OTI0Njc2MzM2LCAiTC4gQWd1aXJyZSAvIEhpemt1bnR6YSBFc2tvbGEiLCAiMTQxMyJdLCBbNDMuMjcxOTI1NDk4MDA5MDI2LCAtMi45NTAwOTYzNDYxMDAzOTk3LCAiTC4gQWd1aXJyZSAvIChCaWRhcnRlKSIsICIxNDE0Il0sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNSwgIkwuIEFndWlycmUgNDIgLyBCaWRhcnRlIiwgIjE0MTUiXSwgWzQzLjI3MDYxMTg0ODQzNDI1LCAtMi45NDczOTA3NTE2NjkyMjE1LCAiTHVpcyBQb3dlciAoMTgpIC8gQW5idWxhdG9yaW9hIiwgIjE0MTYiXSwgWzQzLjI2ODcwODI3NzA5ODY1LCAtMi45NDcyMzkyNDQ1ODE4OTA1LCAiTHVpcyBQb3dlciAoNCkgLyBLaXJvbGRlZ2lhIiwgIjE0MTciXSwgWzQzLjI3MDcxNDEwMTI2MjM3LCAtMi45NTY4NDM4OTE5MDk4NjE2LCAiTWFkYXJpYWdhIC8gKEJhc2FiZSkiLCAiMTQxOCJdLCBbNDMuMjcwNzg0MTI0NTE3MTg1LCAtMi45NTQ1MDUwNDM4MzE3NjM3LCAiTWFkYXJpYWdhIC8gKExhIFNhbGxlKSIsICIxNDE5Il0sIFs0My4yNzA2NTA3MzY0ODIyMywgLTIuOTU2NTI0NDkwOTMzNjcwNSwgIk1hZGFyaWFnYSAvIEJhc2FiZSIsICIxNDIwIl0sIFs0My4yNzA2OTM5ODYzNTI3NSwgLTIuOTU0OTE2NTM4NzIwMDg3NSwgIk1hZGFyaWFnYSAvIExhIFNhbGxlIiwgIjE0MjEiXSwgWzQzLjI3MTk0NzgwNjA3NTQ3LCAtMi45NDUwODUzOTU3NzIyNTQ3LCAiU2FuIFBlZHJvIC8gRWxpemEiLCAiMTQyMyJdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTMsICJTYW4gUFx1MDBlZG8gWCAvIEYuTWFjaVx1MDBlMSIsICIxNDI0Il0sIFs0My4yNzEwMjYwMjQyMTUwMDQsIC0yLjk0MTIzOTg3ODY2NjQ0NSwgIlNhbiBQXHUwMGVkbyBYIC8gSC5BZ3VpcnJlIiwgIjE0MjUiXSwgWzQzLjI3MTI5MTQwNDk2MTkzLCAtMi45NTI2MDUxNjM2NTY5MTYsICJTYWdyYWRhIEZhbWlsaWEgLyAoU2FsZXNpYW5vcykiLCAiMTQyOCJdLCBbNDMuMjY1NjY5MTEwODE4MTcsIC0yLjk1NzkzNDkwNzEzMzQ2MjQsICJSaWJlcmEgZGUgRGV1c3R1ICgyOCkiLCAiMTUwMSJdLCBbNDMuMjY2NDA3NDc3Mzc2NDQsIC0yLjk1OTQ4ODE0MzQ1NTE1NiwgIlJpYmVyYSBkZSBEZXVzdHUgKDM2KSIsICIxNTAzIl0sIFs0My4yNjgwMjA3OTAyNTg5MywgLTIuOTYxNDk0MDIyNTQzMzAxNSwgIlJpYmVyYSBkZSBEZXVzdHUgKDU5KSIsICIxNTA0Il0sIFs0My4yNzA3NjU4Mzc3ODE0MywgLTIuOTY0MzIyMDA2MDU5MzQxNiwgIlJpYmVyYSBkZSBEZXVzdHUgKDg3KSIsICIxNTA1Il0sIFs0My4yNjU2NDQ1MDI4NTM5LCAtMi45NTcxMjkwNjc0NDg5MjM1LCAiUmliZXJhIGRlIERldXN0dSAyMCIsICIxNTA2Il0sIFs0My4yNjY1NTE4OTgzNDA5LCAtMi45NTk1NzU0NTM0Mzc1Mzc0LCAiUmliZXJhIGRlIERldXN0dSAzNiIsICIxNTA4Il0sIFs0My4yNjc5NDUzNjIwNzkwMSwgLTIuOTYxMjkyNTA0NDUxMzIyNywgIlJpYmVyYSBkZSBEZXVzdHUgNTciLCAiMTUwOSJdLCBbNDMuMjcwNzk4NjYwNDEyNTgsIC0yLjk2NDI2MTMyNzg3NjE2NSwgIlJpYmVyYSBkZSBEZXVzdHUgODciLCAiMTUxMCJdLCBbNDMuMjc0NjczMzYyMDMxMzY1LCAtMi45NjcxMjA3MTQ4NDQ2NSwgIlpvcnJvdHphdXJyZSAoMTcpIiwgIjE1MTEiXSwgWzQzLjI3NjgwMjQzODc1NzM5LCAtMi45NjgxNjA1NDc3NTg0NjgsICJab3Jyb3R6YXVycmUgKDM2KSIsICIxNTEyIl0sIFs0My4yNzI1OTAwNDU1OTIyMSwgLTIuOTY1MzIxMzc0NTEzOTEyNiwgIlpvcnJvdHphdXJyZSAoOSkiLCAiMTUxMyJdLCBbNDMuMjc0NTU5MDkzNzMwMDc2LCAtMi45NjY5MDI5NjE0Mzc5MjYzLCAiWm9ycm90emF1cnJlIDE3IiwgIjE1MTQiXSwgWzQzLjI3MjQ1MDc5NDMxNzk5LCAtMi45NjUxNzE5MzQ4NDI2ODM1LCAiWm9ycm90emF1cnJlIDkiLCAiMTUxNSJdLCBbNDMuMjc0MDk4OTg1MTE1NjUsIC0yLjk0ODQ1OTQxOTIwMTQ0MTcsICJBcmFuZWtvIDE3IiwgIjE2MDEiXSwgWzQzLjI3NjA1MDgxODc2NDI1LCAtMi45NDk1MDE4NTg2NTkyNzQ1LCAiQmVycml6YmlkZWEgLyBBbmJ1bGF0b3Jpb2EiLCAiMTYwMiJdLCBbNDMuMjc0NDc0NTY3MTkzNjE0LCAtMi45NDcxOTk1NjA3Njk4ODM4LCAiRWdpbGVvciA0IiwgIjE2MDMiXSwgWzQzLjI3NTQxMjQ0MzA4NzA5LCAtMi45NDc0MjA4NTc2NDY2ODI3LCAiR2FuZXRhIE1lbmRpYSAoNykiLCAiMTYwNCJdLCBbNDMuMjc1Mzk4NTEwMDA2MjU1LCAtMi45NDk2MTc2MTIzNzQ4MjIsICJNaXJhbWFyYmlkZWEgLyBFc2tvbGEiLCAiMTYwNSJdLCBbNDMuMjc2NTcyMzczNDAwNTksIC0yLjk1MDUwMTc2NzYwODI0MzcsICJWaXJnZW4gZGVsIFBpbmFyIDUiLCAiMTYwNiJdLCBbNDMuMjc2MTQyODg5ODIxNDM2LCAtMi45NTAwNzM4MjU3Njk3MTc3LCAiVmlyZ2VuIGRlbCBQaW5hciA5IiwgIjE2MDciXSwgWzQzLjI3NDc1NDIwNDM3MTEwNiwgLTIuOTQ2ODYwMzQzNzcwMDI4NSwgIkdhbmVrb2dvcnRhIDEwIiwgIjE2MDgiXSwgWzQzLjI3NDM4MTY0ODg3NTExNCwgLTIuOTQ1NzY1MjgwNjUzOTYzLCAiR29yYmVpYSAoMykiLCAiMTYwOSJdLCBbNDMuMjc1NDQ4MDYyNzQ5MjQsIC0yLjk1MjM5NTU3MjUyMjQ3NjYsICJBcmFuZWtvYmlkZWEgLyBDZW1lbnRlcmlvIiwgIjE3MDEiXSwgWzQzLjI3Njg3NzE0MTkxNzg4NiwgLTIuOTUzMjE3MTkxODM4MjQwNCwgIk1pcmFtYXJiaWRlYSAoNDcpIiwgIjE3MDIiXSwgWzQzLjI3NjU0NDc5OTI3MTk3LCAtMi45NTM4NDQxMTgwNjg1MjksICJNaXJhbWFyYmlkZWEgLyBBcmFuZWtvYmlkZWEiLCAiMTcwMyJdLCBbNDMuMjY2NDM0OTAzODkxMzUsIC0yLjkyNjgyODE1MDA3NTM3MywgIkNhbXBvIFZvbGFudFx1MDBlZG4gKDIxKSIsICIyMTAxIl0sIFs0My4yNjQ0OTIxMzE2MDA2MSwgLTIuOTI0NTA2MDc1ODM0MzAzMywgIkNhbXBvIFZvbGFudFx1MDBlZG4gKDQpIiwgIjIxMDIiXSwgWzQzLjI2OTIyNjQxMTgxMjY0NiwgLTIuOTMwMzM2NTE1NjMyNzA4LCAiQ2FtcG8gVm9sYW50XHUwMGVkbiAvIExhIFNhbHZlIiwgIjIxMDMiXSwgWzQzLjI2NTIzMDg2NTMzMDkwNiwgLTIuOTI1MjIzOTc3ODMzMjQzNiwgIkNhbXBvIFZvbGFudFx1MDBlZG4gMTMiLCAiMjEwNCJdLCBbNDMuMjY2ODMwMTI2ODcyMTg2LCAtMi45MjcyMzYwOTMxMDU2MTg1LCAiQ2FtcG8gVm9sYW50XHUwMGVkbiAyMyIsICIyMTA1Il0sIFs0My4yNjgzNzExODA3ODM2NDYsIC0yLjkyNjQ3ODM1ODQxMDAwNCwgIkNhc3RhXHUwMGYxb3MgLyBGdW5pa3VsYXJyYSIsICIyMTA3Il0sIFs0My4yNjM5Mzg3NTkxODA4OCwgLTIuOTIzNTc5MDgwNDgwNzIyNywgIkVybmVzdG8gRXJrb3Jla2EgLyBVZGFsZXR4ZWEiLCAiMjEwOCJdLCBbNDMuMjY5NjgwMTEyMDY2Nzk0LCAtMi45MzEzODMwNjI4MjU0MjY1LCAiTGEgU2FsdmUgLyBJZ29nYWlsdWEiLCAiMjEwOSJdLCBbNDMuMjY2MjA4ODk0NTIyODIsIC0yLjkyNTQ5MDk3Nzg5ODYwMDcsICJUaWJvbGkgMSIsICIyMTEwIl0sIFs0My4yNjkyMDc2NDI3NTMwOTUsIC0yLjkyODYyODQ5ODE5MDgwNzUsICJUcmlzdFx1MDBlMW4gZGUgTGVndWl6YW1cdTAwZjNuIDUiLCAiMjExMSJdLCBbNDMuMjY0OTgyMjYxMjg4NzUsIC0yLjkyMjQ3NjQ3MDc1MDI1OTcsICJLcmlzdG8gMSIsICIyMjAyIl0sIFs0My4yNjgwNTI1NjkyNTU5MzYsIC0yLjkyNDQ0MzY4ODA3NjMzMiwgIk1hdGlrbyAxIiwgIjIyMDMiXSwgWzQzLjI2OTMwNzE1NDM1ODMsIC0yLjkyNDYxMTU2ODg3MjE0NSwgIlJpY2FyZG8gQXJyZWd1aSAzMyIsICIyMjA1Il0sIFs0My4yNjcxODQ2MDMzNzkwMTUsIC0yLjkyNTE4NDM2NjI3MTQ3ODcsICJUaWJvbGkgMTIiLCAiMjIwNiJdLCBbNDMuMjcwMDgzODk0NzkwMjA0LCAtMi45MjYwMDM1NjIxMjI4NzMzLCAiTWF1cmljZSBSYXZlbCAvIENpdWRhZCBKYXJkXHUwMGVkbiIsICIyMzAxIl0sIFs0My4yNzIzMzgwOTE0MjU4NSwgLTIuOTI1Mjg3NTYwMDk1MDU0MywgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA4NSIsICIyMzAyIl0sIFs0My4yNzI2NDM4NDc1Mjg2ODQsIC0yLjkyNTkzMzk3MDc2MjIxODcsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgOTMiLCAiMjMwMyJdLCBbNDMuMjY4MzE5OTIwNzcyODksIC0yLjkxODYxNDM1MDc4ODQwMiwgIkFsZGFtaXogTWVuZGlhIC8gVGVsZWZcdTAwZjNuaWNhIiwgIjI0MDEiXSwgWzQzLjI2NzQzODAwNzgxMjE2LCAtMi45MTk4NzAwNDM3NTMyNzcsICJJemFybyBNZW5kaWEgOCIsICIyNDAyIl0sIFs0My4yNjk2Njg2MTMzODM3MywgLTIuOTIyNDc5MjE0NDc4Mzc2NCwgIk1hdXJpY2UgUmF2ZWwgLyAoTWlyYWRvcikiLCAiMjQwMyJdLCBbNDMuMjY5ODMxMzcxNDg0OTI2LCAtMi45MjI1NzI4NDU1MTc1MDc3LCAiTWF1cmljZSBSYXZlbCAvIE1pcmFkb3IiLCAiMjQwNCJdLCBbNDMuMjY3ODMwMzcwMzg5NTc1LCAtMi45MTg0MzQ4NTAxODE5OTE0LCAiTWF1cmljZSBSYXZlbCAyMCAvIFRlbGVmXHUwMGYzbmljYSIsICIyNDA1Il0sIFs0My4yNjc2NDE0MTAyNDcwNiwgLTIuOTE4NDI2NjI0NzUxOTkyLCAiTWF1cmljZSBSYXZlbCA3IC8gKFRlbGVmXHUwMGYzbmljYSkiLCAiMjQwNiJdLCBbNDMuMjY1NTMwODIxODE3NjU2LCAtMi45MTY4NzgwNjczMjA2MjgsICJNXHUwMGZhc2ljbyBHdXJpZGkiLCAiMjQwNyJdLCBbNDMuMjY1OTY0NTEyOTk3OTk2LCAtMi45MTgwODU3MzMxMDM2NzgyLCAiU2FuIEJhbGVudGluIEJlcnJpb3R4b2EgKDEpIiwgIjI0MDgiXSwgWzQzLjI2NzE3NTU3MjQzNDQ2LCAtMi45MjEzMzQ1NDM1NDM1MjM0LCAiVHJhdWtvICg1KSIsICIyNDA5Il0sIFs0My4yNjcyNjE2NjA2Njg4ODYsIC0yLjkyMTUwNTA4NzA3NzIxNywgIlRyYXVrbyAzIiwgIjI0MTAiXSwgWzQzLjI2OTMyMTEyMDcwNDUsIC0yLjkxODYyOTczNjUwMDc4OTQsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgLyBOdWV2YSBBdXJvcmEiLCAiMjQxMSJdLCBbNDMuMjY3OTk0NTM3MzQ3MzYsIC0yLjkxNTY4NDc3MDk5MDQ1MiwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA1OSIsICIyNDEyIl0sIFs0My4yNzAxMjcyMjg3NDMwOSwgLTIuOTE5Nzk2NTU3NDk4OTM4LCAiVlx1MDBlZGEgVmllamEgZGUgTGV6YW1hIDczIiwgIjI0MTMiXSwgWzQzLjI3MTQwMTA5NzEzMzcwNSwgLTIuOTIxMTQ2NzcwMDQ4NTQ5NiwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA3NSAvIE1vbnRhXHUwMGYxbyIsICIyNDE0Il0sIFs0My4yNjQ5MDAyNzM4NDU0NiwgLTIuOTE4MzM1NzMyMjAwMjYwOCwgIlp1bWFsYWNcdTAwZTFycmVndWkgLyBULlp1YmlyaWEiLCAiMjQxNSJdLCBbNDMuMjY2NzA5MTYyMjA4NzMsIC0yLjkxOTczNzk1NDEwODExNDMsICJUcmF1a28gMTQiLCAiMjQxNiJdLCBbNDMuMjYyMjUzMDM3MjI3NzksIC0yLjkxMzA3MzAzNzgwNTI2NTQsICJBbmRyYW1hcmlhIiwgIjI1MDEiXSwgWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNSwgIkFyYWJlbGxhIiwgIjI1MDIiXSwgWzQzLjI2NTUxMzY0MzEwODQ2LCAtMi45MTY2ODMxMDkwNzgxNjgsICJBcnR6YWluIE9uYXJlbiA0IiwgIjI1MDMiXSwgWzQzLjI2MDY1ODE0Mjk0NzU5LCAtMi45MTI1OTQ2NDMzODgwODgsICJTYW4gSXNpZHJvIiwgIjI1MDQiXSwgWzQzLjI2NDY2NjYxMjM3MDc5LCAtMi45MTM2MTQ4MjQyODU5Nzc2LCAiVlx1MDBlZGEgVmllamEgZGUgTGV6YW1hIC8gSXR1cnJpb25kbyIsICIyNTA1Il0sIFs0My4yNjIzOTE0MDAwNzExNDUsIC0yLjkxNTMwNzM1NDM4Mjk0OSwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSAyIiwgIjI1MDYiXSwgWzQzLjI2NTM0NTQ5Nzk3NDgxLCAtMi45MTMzMDUzNDU5MzY0MjUsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgMzUiLCAiMjUwNyJdLCBbNDMuMjYxNTMxMDAyMDY1NDEsIC0yLjkxNTI3NDI2NzU0NDQ0NjcsICJadW1hbGFjXHUwMGUxcnJlZ3VpIDEwNSIsICIyNTA4Il0sIFs0My4yNjAzMTU1NDczMDc2MSwgLTIuOTE0MDQ0NDQ2MDM2NDU1LCAiWnVtYWxhY1x1MDBlMXJyZWd1aSAxMjEiLCAiMjUwOSJdLCBbNDMuMjY0NzcyNzMzNDQzNzM1LCAtMi45MTE3OTc4MTY2OTU4MzUsICJadXJiYXJhbmJhcnJpIiwgIjI1MTAiXSwgWzQzLjI2MzAzMDE1MDQxMjEsIC0yLjkxMDkxNTY2OTE2MzUzNDUsICJTYXJyaWt1ZSIsICIyNjAxIl0sIFs0My4yNjExMjE0MjcxOTg5MiwgLTIuOTExMjAxODAxNTM0ODk1NSwgIlphYmFsYmlkZSAoMTEyKSAvIEFyYWJlbGxhIiwgIjI2MDIiXSwgWzQzLjI3MTM5ODIyNTAwNjAyNCwgLTIuOTIxMDIwOTg0NDQyMDIzNCwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSAoNzUpIC8gTW9udGFcdTAwZjFvIiwgIjI3MDEiXSwgWzQzLjI3MjMzODYzMjIxODgyNiwgLTIuOTI1MDk5NTIwNDMzMzMsICJWXHUwMGVkYSBWaWVqYSBkZSBMZXphbWEgKDg1KSIsICIyNzAyIl0sIFs0My4yNjc4ODg3NDY2NDkxOSwgLTIuOTE1NDk2NjI5MDU3MTM2MiwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA3MCIsICIyNzAzIl0sIFs0My4yNjk0MjIxMjQxNDM2MywgLTIuOTE4ODQzODg0NDY5Mzk0NSwgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA3OCIsICIyNzA0Il0sIFs0My4yNzAxNDMzMzkyMzc0OSwgLTIuOTE5NzUyNDU2MTUzMDExMywgIlZcdTAwZWRhIFZpZWphIGRlIExlemFtYSA4MiIsICIyNzA1Il0sIFs0My4yNjA4MTQ4MDkwMDg3NCwgLTIuODk2NjU4ODQyMDIzMjczNywgIkFyYm9sYW50eGEgMTgiLCAiMzEwMSJdLCBbNDMuMjU3MzMxNzcwODg5OCwgLTIuODk5MDY0NTc3OTQ5NTQ5NiwgIkp1bGlcdTAwZTFuIEdhaWFycmUgKDYxKSIsICIzMTAyIl0sIFs0My4yNTc5ODgxODU4NDc4NCwgLTIuODk4MDA2MzA4ODY0NTcxMywgIkxhbmdhcmFuICgzKSAvIE1lcmthdHVhIiwgIjMxMDQiXSwgWzQzLjI2MDQ5ODE1OTM0NTU2NiwgLTIuODk3OTA3MjY4Njg4NDY1NywgIkxhbmdhcmFuIDQ0IiwgIjMxMDUiXSwgWzQzLjI2MDg0OTY0NTEyNjE5LCAtMi44OTg4MjcyMzQ1MjMwNDUsICJMYXJyYXR1bmR1IDIxIiwgIjMxMDYiXSwgWzQzLjI1NzcwODMxMzc2MTc0NiwgLTIuODk5MDQzOTY3Mjc2NDM0MywgIlBhdSBDYXNhbHMgKDIxKSAvIEMuQ1x1MDBlZHZpY28iLCAiMzEwNyJdLCBbNDMuMjU4Njc2NDc4MzgxMzk2LCAtMi45MDI3MjA0Njk5MjA4NDg0LCAiUGF1IENhc2FscyAvIEplc1x1MDBmYXMgR2FsXHUwMGVkbmRleiIsICIzMTA4Il0sIFs0My4yNTkzMjg4OTc4MzMyMiwgLTIuOTAwMjc5MzI3MTcxNzMyNiwgIlBhdSBDYXNhbHMgMTYiLCAiMzEwOSJdLCBbNDMuMjU4OTA2OTA2MjY1MTc1LCAtMi44OTc3MDI3NjA1NTc4MDI3LCAiVHhvdGVuYSAvIExhbmdhcmFuIiwgIjMxMTAiXSwgWzQzLjI1ODc1NTY4NzQzNzkwNSwgLTIuODk2NzIzODEyMTAzNjMyLCAiVHhvdGVuYSA2MiIsICIzMTExIl0sIFs0My4yNTczNzk1Njc0MDgxOSwgLTIuODk2NTA2MTE2NjkzNzQ0LCAiVHhvdGVuYSA4IiwgIjMxMTIiXSwgWzQzLjI2MDYwNjMzNTQyNDA3LCAtMi45MDEyNDUxMTQyNDA2NDksICJVZ2FydGUgKDcpIiwgIjMxMTMiXSwgWzQzLjI2MTM0ODgyODM3NDE0NiwgLTIuOTAwMzc1NzUxMTI5OTQsICJVZ2FydGUgMiIsICIzMTE0Il0sIFs0My4yNTk2OTU3ODExMzIzNjUsIC0yLjkwMDQ3MTcwOTIxMjI0NDUsICJaaXplcnVlbmEgLyBFbGl6YSIsICIzMTE1Il0sIFs0My4yNjEzMzYwNzQwMDY5OCwgLTIuODk5NTc4Njg4OTM2MzIxMywgIlppemVydWVuYSAyMiIsICIzMTE2Il0sIFs0My4yNTYzMDMyMjI0NzYwNCwgLTIuOTAzODI3NTE5NTg3MzI5MywgIkFydGFsYW5kaW8gMyAvIERyLk9ybmlsbGEiLCAiMzIwMSJdLCBbNDMuMjU0OTExODI4MTM4OCwgLTIuOTA3MjA4NDIyODA5MjY2NSwgIkRyLiBPcm5pbGxhICgxMikiLCAiMzIwMiJdLCBbNDMuMjU2MTIwOTA5MDA2MTEsIC0yLjkwNDQxMzM1ODM2Njk5MzgsICJEci4gT3JuaWxsYSAvIEFydGFsYW5kaW8iLCAiMzIwMyJdLCBbNDMuMjU4NDQwODA1NDkyMDY0LCAtMi45MDI3MjI4OTI0NzUxNzcsICJEci4gT3JuaWxsYSAvIFBhdSBDYXNhbHMiLCAiMzIwNCJdLCBbNDMuMjUwODE4Njc2MzE1ODcsIC0yLjkwNDYzNjE0Njc4MDQ5OTgsICJGZXJuYW5kbyBKaW1cdTAwZTluZXogMTIiLCAiMzIwNSJdLCBbNDMuMjU3NDE4MDc3MzI4OTUsIC0yLjkwNzIwMzI4OTkwOTU4MDMsICJHYWJyaWVsIEFyZXN0aSAvIChBbmJ1bGF0b3Jpb2EpIiwgIjMyMDYiXSwgWzQzLjI2MDM2NzMwNjQyNDEzLCAtMi45MDMzMDQ2NzI4ODM5MTMsICJHYXJhaXphciAoMTYpIiwgIjMyMDgiXSwgWzQzLjI2MTUyMjM4NTE5MjQ2NCwgLTIuOTA0ODI1NDUwODAxNTE1NCwgIkdhcmFpemFyIC8gSWthc3RvbGEiLCAiMzIwOSJdLCBbNDMuMjYwMzkzNjA5NTAwMTEsIC0yLjkwNDY1OTU3MTE4NTcxNCwgIkplc1x1MDBmYXMgR2FsXHUwMGVkbmRleiAvIEFkb3JhdHJpY2VzIiwgIjMyMTAiXSwgWzQzLjI1NzgzMDgzMzM0NDg1LCAtMi45MDk3MDIyMjk4MTM3NTQsICJKZXNcdTAwZmFzIEdhbFx1MDBlZG5kZXogLyBUeG9taW4gR2FyYXQiLCAiMzIxMSJdLCBbNDMuMjYwMzI5MTQ0Njc4NDY1LCAtMi45MDQ3NDcxNDIzMTI3MzIsICJKZXNcdTAwZmFzIEdhbFx1MDBlZG5kZXogMjYiLCAiMzIxMyJdLCBbNDMuMjU4OTA0OTc3Njg2MTMsIC0yLjkwOTA0MTUyNzA4MjI3NiwgIkplc1x1MDBmYXMgR2FsXHUwMGVkbmRleiAzIC8gQ29sZWdpbyBBbGVtXHUwMGUxbiIsICIzMjE0Il0sIFs0My4yNTU1MTAwMjc0NDM5NiwgLTIuOTAwNjQwNzU3NTQ2NjU2LCAiSnVsaVx1MDBlMW4gR2FpYXJyZSAoMzkpIC8gQXJ0YWxhbmRpbyIsICIzMjE1Il0sIFs0My4yNTAzMzY0MTAxNzA3NDYsIC0yLjkwMzY3MTkzMTc0OTI5MDcsICJKdWxpXHUwMGUxbiBHYWlhcnJlICg2KSIsICIzMjE2Il0sIFs0My4yNTA3MjI4MjQ3Mzk2LCAtMi45MDMzMjg2OTc0ODY3ODI3LCAiSnVsaVx1MDBlMW4gR2FpYXJyZSAxMCIsICIzMjE3Il0sIFs0My4yNTMwMjY4NDU0NjQ1NzUsIC0yLjkwMjIxMTg3NjE2NTIxOSwgIkp1bGlcdTAwZTFuIEdhaWFycmUgMjMiLCAiMzIxOCJdLCBbNDMuMjU1MDQyMzY3NTM3ODMsIC0yLjkwMTEyNTg1MzExNDgwODUsICJKdWxpXHUwMGUxbiBHYWlhcnJlIDMzIC8gQXJ0YWxhbmRpbyIsICIzMjE5Il0sIFs0My4yNTI1NjE5MzkyNzc2OSwgLTIuOTAyMzM3MDYzMTA4MTk1MywgIkp1bGlcdTAwZTFuIEdhaWFycmUgMzYiLCAiMzIyMCJdLCBbNDMuMjU1NTY5OTU3MTk2NCwgLTIuOTAwNzc1NTY1NzE0LCAiSnVsaVx1MDBlMW4gR2FpYXJyZSAzOSAvIEFydGFsYW5kaW8iLCAiMzIyMSJdLCBbNDMuMjU3Mzc4OTUzNjk4ODYsIC0yLjg5OTE5MTE4ODYxMTM5MDYsICJKdWxpXHUwMGUxbiBHYWlhcnJlIDYxIiwgIjMyMjIiXSwgWzQzLjI1NTA0NTE2Njg0MzA1NCwgLTIuOTAwOTg3OTg2MzI5MjMyMywgIkp1bGlcdTAwZTFuIEdhaWFycmUgODIiLCAiMzIyMyJdLCBbNDMuMjUzMzYwMDMxNjQ4ODUsIC0yLjkwMzcyMzMzNzMzOTQ4MywgIk9uZGFycm9hIC8gUGFya2VhIiwgIjMyMjQiXSwgWzQzLjI1Njg0MzQ0NzE3NjI5LCAtMi45MDY4MzE4NjAwMjk3NjgyLCAiVHhvbWluIEdhcmF0IDEyIC8gKEFuYnVsYXRvcmlvYSkiLCAiMzIyNSJdLCBbNDMuMjU3MjI5NzE2NTgwNywgLTIuOTA5ODQyMTc1NDI5ODkzNSwgIlR4b21pbiBHYXJhdCA0IiwgIjMyMjYiXSwgWzQzLjI1NjQ2NTczMjU0NzkyLCAtMi45MDQ2OTI2NzUyMTgzMTA0LCAiVHhvbWluIEdhcmF0IDQwIC8gUmVzaWRlbmNpYSIsICIzMjI3Il0sIFs0My4yNTcwMzU1NTM1ODA1OCwgLTIuOTA2ODUyODQ1NDA1NzMxNCwgIlR4b21pbiBHYXJhdCA5IC8gQW5idWxhdG9yaW9hIiwgIjMyMjgiXSwgWzQzLjI1Nzk3NTM2NDczMzQ1NCwgLTIuOTEwOTUxMDg0MDUyNDQ5MywgIlphYmFsYmlkZSAoNjEpIiwgIjMyMjkiXSwgWzQzLjI1Njg1NDkxMTk4MjI4LCAtMi45MTE2NTk1MTY0NDQ5NDEzLCAiWnVtYWxhY1x1MDBlMXJyZWd1aSAvIChNYWt1YSkiLCAiMzIzMCJdLCBbNDMuMjU3ODM4OTA5NjIzNDIsIC0yLjkxNjc4MjMxNTkzNjA3NzcsICJBbWFkZW8gRGVwcml0IC8gRG9sYXJldHhlIiwgIjQxMDEiXSwgWzQzLjI2MDAzNzU3NDQxNzA3LCAtMi45MTcwMTg1MzY3MTcxMzM1LCAiQW1hZGVvIERlcHJpdCAvIFAuQ29ydFx1MDBlOXMiLCAiNDEwMiJdLCBbNDMuMjYwMzA2MzA3NjY1MiwgLTIuOTE2NjY4NTUyMzUwMzE3LCAiQW1hZGVvIERlcHJpdCA4IiwgIjQxMDMiXSwgWzQzLjI1ODk4MTU3MTM1NjcwNiwgLTIuOTEzODY3MDU3NDIzNzQzNywgIkJlZ29cdTAwZjFha28gQmFzaWxpa2EiLCAiNDEwNCJdLCBbNDMuMjU2ODYxMzM4NjY0MDQ1LCAtMi45MTE5OTI5Mzc2NjU5NDA2LCAiTWFrdWEiLCAiNDEwNSJdLCBbNDMuMjU3NTEyNjY0MDI5MDY1LCAtMi45MTM0MDUzMjM4MTQ1NzYsICJNYXN1c3RlZ2kgKDIxKSIsICI0MTA2Il0sIFs0My4yNTcyNTUzNTY4MTg4OSwgLTIuOTEzNjEzOTgwMDM1NDM4NCwgIk1hc3VzdGVnaSAyMSIsICI0MTA3Il0sIFs0My4yNTU5ODM3NzYzNTgzODQsIC0yLjkxMzA5ODI3NjU0NjY4OTcsICJNYXN1c3RlZ2kgMyIsICI0MTA4Il0sIFs0My4yNjA3ODUxNzgzMjU1NSwgLTIuOTE0ODA0NDU0MTk2MDE4MywgIlp1bWFsYWNcdTAwZTFycmVndWkgMzgiLCAiNDEwOSJdLCBbNDMuMjUwNjc1Mjc2MTYyODIsIC0yLjkxMTg0MzAzNjE4NzE5NywgIkFudG9uaW8gRWd1aWx1eiAxOSIsICI0MjAxIl0sIFs0My4yNDk1NTYyMjU5NTA4MSwgLTIuOTA4NDAxNjAwMDE2MDc4LCAiQ2lyY28gQW1hdGV1ciAvIEtpcm9sZGVnaWEiLCAiNDIwMiJdLCBbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NSwgIkVucmlxdWUgSWJhcnJldGEgMiIsICI0MjAzIl0sIFs0My4yNDk5OTIwNjU1MTM2MywgLTIuOTE3NDc4MjU3MTU3MDY4NSwgIkluZGFsZWNpbyBQcmlldG8gKDEyKSIsICI0MjA0Il0sIFs0My4yNDg4ODQ0NzMwNDk2OCwgLTIuOTE5MzM3MDM0NDkzNTA5NSwgIkluZGFsZWNpbyBQcmlldG8gMSIsICI0MjA1Il0sIFs0My4yNDk5OTQ1MzcyMDUyMiwgLTIuOTE2ODUwMzgwNDA3OTc4LCAiSW5kYWxlY2lvIFByaWV0byAxNiIsICI0MjA2Il0sIFs0My4yNTAzODU0MzIzMDY5NTYsIC0yLjkxMDY2MDUwNjIwMTM3MzMsICJJdHVycmlhZ2EgLyBCYXNhcnJhdGUiLCAiNDIwNyJdLCBbNDMuMjUxNjU4NzQ5Njc1NzIsIC0yLjkxMDU4ODI5MjA0OTU2OTYsICJJdHVycmlhZ2EgNTggLyBMLiBCcmlcdTAwZjFhcyBFc2tvbGEiLCAiNDIwOCJdLCBbNDMuMjU0OTg5NzgwNzkxMTU2LCAtMi45MTE5MzQzNDc3MzA5MDM2LCAiU2FudGEgS2xhcmEgKDEyKSIsICI0MjA5Il0sIFs0My4yNTA5OTk2NTM4Nzk1NywgLTIuOTE0NzIxMzI2NTg0MDkwNiwgIlNhbnR1dHh1ICg0NSkiLCAiNDIxMCJdLCBbNDMuMjUzMTIwNTEzNTU4OTA1LCAtMi45MTU2MTc4NTY4MTkxMjM4LCAiU2FudHV0eHUgMTgiLCAiNDIxMSJdLCBbNDMuMjU0NjIxMDI5ODU4NzU0LCAtMi45MTY5MTMwNDQ3NDI3NDE2LCAiU2FudHV0eHUgMiIsICI0MjEyIl0sIFs0My4yNTE3MTkyNjA2NTA3NiwgLTIuOTE0NjQxOTY4MjMxNjc2LCAiU2FudHV0eHUgNDgiLCAiNDIxMyJdLCBbNDMuMjU1NjU0OTcyNzY5MywgLTIuOTEwODI2MzI2NjU3OTAzNSwgIlp1bWFsYWNcdTAwZTFycmVndWkgNTYiLCAiNDIxNCJdLCBbNDMuMjQ5ODk2MDc1MDU0MzIsIC0yLjkwODYwMzUxMTE5MzkyMSwgIkNpcmNvIEFtYXRldXIgKEtpcm9sZGVnaWEpIiwgIjQzMDIiXSwgWzQzLjI0ODY3MTEzODk1ODU4NSwgLTIuOTA2OTI3ODc1MjMwMDQ0LCAiQ2lyY28gQW1hdGV1ciAvIEJvbHVldGEiLCAiNDMwMyJdLCBbNDMuMjQ4ODMzNDgwODY4ODQ2LCAtMi45MDkzNDcwMjM4NTU0MzM1LCAiQ29jaGVyaXRvIGRlIEJpbGJhbyAxNCIsICI0MzA0Il0sIFs0My4yNDkwMzgyMjc4MzQ1MywgLTIuOTEzNTU5Nzk3OTk4NTY4MywgIlNhZ2FybVx1MDBlZG5hZ2EgMzIgLyBFc2tvbGEiLCAiNDMwNSJdLCBbNDMuMjYwNDExNTY5MTE0ODQ0LCAtMi45MjI5MzYxOTIyNTc1NDA1LCAiQXJlbmFsIC8gKFNhbiBOaWNvbFx1MDBlMXMpIiwgIjUxMDEiXSwgWzQzLjI1OTU2MjQ2MzcxOTE1LCAtMi45MjQwMzc4ODExOTgwMTAzLCAiQXJlbmFsIC8gQXJyaWFnYSIsICI1MTAyIl0sIFs0My4yNjQwOTk1MTM1MDAwMiwgLTIuOTIyNTkwMTEyMDcyNTg3NywgIkVybmVzdG8gRXJrb3Jla2EgOCIsICI1MTAzIl0sIFs0My4yNjE0MTgyNjg1MTc4MTUsIC0yLjkxNTg3MDE2Nzk2NDgyLCAiUFx1MDBlMXJyb2NvIFVnYXogLyBSb3RvbmRhIiwgIjUxMDQiXSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDksICJQdWVudGUgZGVsIEFyZW5hbCIsICI1MTA1Il0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDUsICJSaWJlcmEgLyBNZXJrYXR1YSIsICI1MTA2Il0sIFs0My4yNTk4MzA4NjM4NTE0NiwgLTIuOTIyMzEwNjQ2Mjc2MTMzLCAiU2FuIE5pY29sXHUwMGUxcyA0IiwgIjUxMDciXSwgWzQzLjI2Mjg0NTEyMTEyMjEwNSwgLTIuOTIzMDU5MTQzMzk5ODYxNiwgIlNlbmRlamEgKDUpIiwgIjUxMDgiXSwgWzQzLjI1ODE3MjIwNDg3MzY5LCAtMi45MjE1NzI3MjIyNTQwNTcsICJVbmFtdW5vIiwgIjUxMDkiXSwgWzQzLjI2MDQyMDY5NzY0NjE1NCwgLTIuOTIyNzU1MzgyOTA3ODQ1NCwgIlZpdWRhIGRlIEVwYWx6YSAxIC8gU2FuIE5pY29sXHUwMGUxcyIsICI1MTEwIl0sIFs0My4yNjQ3NTAzNzM1NDcwNDUsIC0yLjkxODQxMzg4MDAzNTk5ODQsICJadW1hbGFjXHUwMGUxcnJlZ3VpIC8gKFQuWnViaXJpYSkiLCAiNTExMSJdLCBbNDMuMjU3NzU5NjIyMDMyMDgsIC0yLjkxNjgzNDYzOTMxNTgxMzgsICJBbWFkZW8gRGVwcml0IDEiLCAiNTIwMSJdLCBbNDMuMjU3Njc5NTgxMjAxMTc0LCAtMi45MTg1ODE5NjU5MzI1NDgzLCAiRmlrYSAyIiwgIjUyMDIiXSwgWzQzLjI1NzAwODk5OTAwODE4LCAtMi45MTcxNjE5MjY5MjgwMDQsICJJdHVycmliaWRlIDUzIiwgIjUyMDMiXSwgWzQzLjI1NzU4MDI4ODMyMTQ1NiwgLTIuOTE3NjI4NjA0NTQ4NDI0MywgIlByaW0gMjIgQmlzIiwgIjUyMDQiXSwgWzQzLjI1NjY2OTc2MDU5NjQ2NiwgLTIuOTE2MDE3MjcyOTg5Nzg2NCwgIlByaW0gMzYiLCAiNTIwNSJdLCBbNDMuMjU2MzE4NDUxODY2NDYsIC0yLjkxNDM5OTkwNDc2MjAyNzUsICJQcmltIDUyIiwgIjUyMDYiXSwgWzQzLjI1NzEyODU3Nzg5Nzc0NSwgLTIuOTE0NDQ4NDkwMzc2OTY4LCAiUHJpbSA2MCIsICI1MjA3Il0sIFs0My4yNTcxMDc5Mjc1ODMxNywgLTIuOTE5MjQ1NDI2NDkwODcxLCAiRmlrYSAxOCIsICI1MzAxIl0sIFs0My4yNTYxMTE2NTY4NTMzMTQsIC0yLjkxOTMyNzc0OTQ0NDI0MDQsICJGaWthIDIyIiwgIjUzMDIiXSwgWzQzLjI1Njg5MDQ4NjMwNjMwNCwgLTIuOTE4NDkyNjYxNTEzMzY0LCAiRmlrYSA4IiwgIjUzMDMiXSwgWzQzLjI1NTI2NjI0NDI1MTE3NSwgLTIuOTE5NDA1OTc5NzQwNDQsICJaYWJhbGJpZGUgKDMyKSIsICI1MzA0Il0sIFs0My4yNTQ2NTY0Mjk4MjM4NSwgLTIuOTE0OTUzNTkyMDkwODczLCAiWmFiYWxiaWRlIDQxIiwgIjUzMDUiXSwgWzQzLjI1NTkyMzgxNTAxNTA5NSwgLTIuOTIxNzczOTQwNzM5NDIxLCAiWmFiYWxiaWRlIDciLCAiNTMwNiJdLCBbNDMuMjUzNTcxMTA3NDMwMzI1LCAtMi45MjEzNDgyNDg3MzM5NzMsICJBdHh1cmkgKDE1KSAvIEdlbHRva2lhLUVzdGFjaVx1MDBmM24iLCAiNTQwMSJdLCBbNDMuMjUxNDU4MDg0OTUyMTU1LCAtMi45MjE0NDQ1NzUwNjg2NTUsICJBdHh1cmkgKDQ5KSIsICI1NDAyIl0sIFs0My4yNTM1OTY0NzM2ODg0NzUsIC0yLjkyMTI3NDA4MDE0MTUyOTMsICJBdHh1cmkgMTUiLCAiNTQwMyJdLCBbNDMuMjUxNTMxMzc1Mjc2MSwgLTIuOTIxNDE0NDQ1MjUxNTA2NywgIkF0eHVyaSA0OSIsICI1NDA0Il0sIFs0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNiwgIkRpZWNpc1x1MDBlOWlzIGRlIEFnb3N0byIsICI1NDA1Il0sIFs0My4yNTQ5Nzk5NDU5NTcyNSwgLTIuOTIyMDk5Nzg5OTA0NjE5LCAiU2FudG9zIEp1YW5lcyA0IiwgIjU0MDYiXSwgWzQzLjI1NTAzMDY1MjEyODcsIC0yLjkyMjAwMTcxOTEzMTA3NjgsICJTYW50b3MgSnVhbmVzIDciLCAiNTQwNyJdLCBbNDMuMjQxOTY0MTgwNzA1NTE2LCAtMi45MjM2MzQ0NDg1Mzc5NzE1LCAiQWJ1c3UgLyBJYmFpYWxkZSIsICI1NTAxIl0sIFs0My4yNDE0Nzc4NjA4MDY4MSwgLTIuOTIxMjcwNDUyNTIwODM0NCwgIkFidXN1IC8gSWJhaWVkZXIiLCAiNTUwMiJdLCBbNDMuMjQzMTI4NTUyNTg5OTUsIC0yLjkyNDkwNzY1NjA3MzQzOCwgIkFidXN1IC8gSWJhaXphYmFsIiwgIjU1MDMiXSwgWzQzLjIzMjc4MzM2MTYwNzI4LCAtMi45MTQ0NjY5NzI2MDA4OTQ1LCAiQnVpYSAvIChCb2xpbnR4dWJpZGVhKSIsICI1NTA0Il0sIFs0My4yMzI2NDkyNDA5MTQ2NzUsIC0yLjkxNDUzMzgxMzU2MjY0MTcsICJCdWlhIC8gQm9saW50eHViaWRlYSIsICI1NTA1Il0sIFs0My4yMjYzNzA5ODgyNTQ1MSwgLTIuOTEzOTUyNDgyODA1MjA0NCwgIkJ1aWEgQXV6b2EgKDE1MykiLCAiNTUwNiJdLCBbNDMuMjI2NDE3NjEzNTIyMjE2LCAtMi45MTM5MTEzNjcyNzAyNzY2LCAiQnVpYSBBdXpvYSAxNTMiLCAiNTUwNyJdLCBbNDMuMjI3MTM0ODcxMzIzNDUsIC0yLjkxNjgzMzg2NTE2ODI0MSwgIkJ1aWEgQmVrb2EiLCAiNTUwOCJdLCBbNDMuMjQxOTYzMjE0Nzg5MzQ0LCAtMi45MzQ2NDIzNzU5MjQxOTM3LCAiTGFycmFza2l0dWJpZGVhIC8gKEVzdHJhZGEgQmVpdGkpIiwgIjU1MDkiXSwgWzQzLjI0MjkyNjkwNTk5MjQwNSwgLTIuOTM3OTYwNDE5ODY1NTI2MywgIkxhcnJhc2tpdHViaWRlYSA4MSIsICI1NTEwIl0sIFs0My4yMzk0Mzk1ODc2NDM1NywgLTIuOTE4MTMzMDYzODY2OTI2NSwgIk9sbGFyZ2FuIiwgIjU1MTEiXSwgWzQzLjI0MzMzNTc5NDYzOTk3LCAtMi45MzE3NjAwOTQxMjQ3MDEsICJTYW4gQWRyaVx1MDBlMW4gKDQ4KSAvIElydXN0YWJpZGVhIiwgIjU1MTIiXSwgWzQzLjI0OTAyMjM3MjYxNzU5NiwgLTIuOTIxNDQyMjM1MTY0NjU2NSwgIlVyYXp1cnJ1dGlhIiwgIjU1MTMiXSwgWzQzLjI0NDg3MTg5MjAxMTg3LCAtMi45MjQyODMwNzUwMTI2NzUsICJaYW1cdTAwZTFjb2xhICg4NCkiLCAiNTUxNCJdLCBbNDMuMjQ0ODQxNzY1NjQ0MTcsIC0yLjkyNDk0MTk2NzMxMjMwMjcsICJaYW1cdTAwZTFjb2xhIC8gRXNrb2xhIiwgIjU1MTUiXSwgWzQzLjI0MjQ0OTcxNjE5NTYyLCAtMi45MjU1OTU3NjUyMDIwNzM3LCAiWmFtXHUwMGUxY29sYSAxMTYiLCAiNTUxNiJdLCBbNDMuMjQxMjM0NTUxOTEyMzIsIC0yLjkyMzUxNzg0NzMyNjUxNzgsICJaYW1cdTAwZTFjb2xhIDE1MCAvIEVsaXphIiwgIjU1MTciXSwgWzQzLjI0MDk3NzM1MTUyOTI5NSwgLTIuOTIxNDY0MzAxNDk4ODc0NiwgIlphbVx1MDBlMWNvbGEgMTY4IiwgIjU1MTgiXSwgWzQzLjI0OTUzMjkzODk2ODM4LCAtMi45MjE4NDQyMzIwNjM2Nzg2LCAiWmFtXHUwMGUxY29sYSAyNiIsICI1NTE5Il0sIFs0My4yNTEwMzQ1NTE2MTk0NywgLTIuOTIyODg5ODAwMzcyNDUxNSwgIlphbVx1MDBlMWNvbGEgNCIsICI1NTIwIl0sIFs0My4yNDYxMDA1MTM4OTA3NSwgLTIuOTIxNzEzNzM3Nzg2ODA0LCAiWmFtXHUwMGUxY29sYSA0NSIsICI1NTIxIl0sIFs0My4yNDU3MTk5OTY3MzM4NTQsIC0yLjkyMjUyOTQzNzYzMjYwNjUsICJaYW1cdTAwZTFjb2xhIDcwIiwgIjU1MjIiXSwgWzQzLjI1NDA4ODQ3OTQyNDEwNSwgLTIuOTI1MDgwMzY4ODQwODcwNiwgIk9sYW5vICg0KSIsICI1NjAxIl0sIFs0My4yNTQwMjYwODY0NTY0NiwgLTIuOTIzMTczNDMyODk2NDA2NSwgIlVyYXp1cnJ1dGlhIDEgLyBTYWxhIEN1bmEiLCAiNTYwMiJdLCBbNDMuMjUzNzI4OTMxMzY1MzQ1LCAtMi45MjMwNzkxNTk5ODg2NTY1LCAiVXJhenVycnV0aWEgMTQiLCAiNTYwMyJdLCBbNDMuMjUyMzQzNDAzMDUzMzMsIC0yLjkyMzA3OTM4ODU1MDc5NCwgIlVyYXp1cnJ1dGlhIDQwIiwgIjU2MDQiXSwgWzQzLjI1NDc3MzA3Nzc1MTUyLCAtMi45MjY3NDM4OTQzNDMwNzQ0LCAiQ29ydGVzICgyKSIsICI1NzAxIl0sIFs0My4yNTUzNTA4MjgwMjMwMywgLTIuOTI4MzQyNDUzNDE2NTY0LCAiQ29ydGVzIDEzIiwgIjU3MDIiXSwgWzQzLjI1NjAzNTkyMjM4NDgyNSwgLTIuOTMwMjQ4Mzg0OTgyNDkxNCwgIkNvcnRlcyAyMyIsICI1NzAzIl0sIFs0My4yNTcwOTAzNDI1MzMwNzUsIC0yLjkyNzEyOTI5NTA3NzkyMzcsICJNdWVsbGUgZGUgbGEgTWVyY2VkIDMiLCAiNTcwNCJdLCBbNDMuMjU2NTEwMzAxOTM2MDQ2LCAtMi45MzE3NTg2MDQ1NTkxOTcsICJEci4gRmxlbWluZyAxIiwgIjU4MDEiXSwgWzQzLjI1NDg3Nzk0MzU5MjQ5LCAtMi45MzM0MDM5ODM2MTU1NzU0LCAiSnVhbiBkZSBHYXJheSAxMSIsICI1ODAyIl0sIFs0My4yNTI2OTM2Nzk2MTI2OCwgLTIuOTM0Mjg1NzQyMTUwODc5NSwgIkp1YW4gZGUgR2FyYXkgMzMiLCAiNTgwMyJdLCBbNDMuMjUwNjMxMDc2MjU2NTA0LCAtMi45MzM2NzY1NjYzNjEyNzIsICJSb3RvbmRhIEp1YW4gZGUgR2FyYXkiLCAiNTgwNCJdLCBbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4LCAiWGVucGVsYXIgLyBaYWJhbGEiLCAiNTgwNSJdLCBbNDMuMjU0MzI5OTU1ODEzOTMsIC0yLjkzMjA4MzY1ODcyNTU0OTcsICJaYWJhbGEgMjIiLCAiNTgwNiJdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzMsICJHZXJuaWthIDEiLCAiNTkwMSJdLCBbNDMuMjUwNTMxMTMzNTY4NTY1LCAtMi45Mjk5MDUwNDQ3OTk4NDk0LCAiR2VybmlrYSAxMCIsICI1OTAyIl0sIFs0My4yNTEyMTY4MzUyMzc3MDYsIC0yLjkyOTI2MzUzNzkwMDUxNTQsICJHZXJuaWthIDExIiwgIjU5MDMiXSwgWzQzLjI0OTQxNzYxMDI3MDg4LCAtMi45MjY4OTg4OTcwNTUzMTA1LCAiR2VybmlrYSAyMyIsICI1OTA0Il0sIFs0My4yNDkzNTQ4NTU0ODQxMzUsIC0yLjkyNzkwNzUzNDA0MTAzNjUsICJHZXJuaWthIDI0IiwgIjU5MDUiXSwgWzQzLjI0NzY2MDI0NTY1NTg0NCwgLTIuOTMxNjE5MTMzMTE1MTU3LCAiR29pa28gVG9ycmUgMTIiLCAiNTkwNiJdLCBbNDMuMjQ4NzUyNTM2NTc5NDcsIC0yLjkyODA1ODQzMTUwOTkxOCwgIkp1bGlcdTAwZTFuIFp1Z2F6YWdvaXRpYSAxMyIsICI1OTA3Il0sIFs0My4yNDY4OTA4ODgzNzI3NzUsIC0yLjkyOTc1NDUxMzkxNzgzODUsICJMYSBGbG9yZXN0YSIsICI1OTA4Il0sIFs0My4yNDg1NDYxNDMxNDk2LCAtMi45Mjk5NTQwODkzOTcxODE2LCAiTWFydFx1MDBlZG4gQmFydWEgKDI0KSIsICI1OTA5Il0sIFs0My4yNDkzNjgwODk2NzM3MTYsIC0yLjkzMTU1MzM4NjEwNjk4NTYsICJNYXJ0XHUwMGVkbiBCYXJ1YSAxNyAvIEluc3RpdHV0b2EiLCAiNTkxMCJdLCBbNDMuMjQ2OTI3NDg4NDAwNjIsIC0yLjkzMjU0MjAzNTAwNjY1MDcsICJTYW4gQWRyaVx1MDBlMW4gKDMzKSIsICI1OTExIl0sIFs0My4yNDg0OTc5NzYzNDAwNTUsIC0yLjkzMzEzNTc2NTM4NjU4OTMsICJTYW4gQWRyaVx1MDBlMW4gMTciLCAiNTkxMiJdLCBbNDMuMjQ5NjM5ODk5ODIyMDcsIC0yLjkzMzc2MTg1NDc0OTE3OSwgIlNhbiBBZHJpXHUwMGUxbiAyIiwgIjU5MTMiXSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNiwgIlNhbiBBZHJpXHUwMGUxbiAzNiIsICI1OTE0Il0sIFs0My4yNDY5NDg0OTM1NTQ3NzUsIC0yLjkzMjQyODI2NTE3NjcwMzUsICJTYW4gQWRyaVx1MDBlMW4gMzMiLCAiNTkxNSJdLCBbNDMuMjUyNzIzNjIxMTk4NDcsIC0yLjkzMjYyNDk2MDgwOTMzMywgIlhlbnBlbGFyIC8gVHJhdi5aYWJhbGEiLCAiNTkxNiJdLCBbNDMuMjY2NjkxMjk5MTA1NjIsIC0yLjkzMzMzOTk3MzkzMDE2ODcsICJBbGRhIFJlY2FsZGUgMTEiLCAiNjEwMSJdLCBbNDMuMjY2MDg0OTA3NjE1OTIsIC0yLjkzMzcwNTgzNDYwNzY2NjMsICJBbGRhIFJlY2FsZGUgMTIiLCAiNjEwMiJdLCBbNDMuMjYzNjI5NjMxODM5MDMsIC0yLjkzNDU4Njg5MDE2MTIzOSwgIkFsZGEgUmVjYWxkZSAzMSIsICI2MTAzIl0sIFs0My4yNTc3MTI4MzIyNzY2MywgLTIuOTM1MDUwMDk2NTk0Mjk0NywgIkFsZGEgU2FuIE1hbVx1MDBlOXMgOCIsICI2MTA0Il0sIFs0My4yNTczNTA3NTEzODM4NDYsIC0yLjkzNTMxMzY2MDA0MjcxNTQsICJBdXRvbm9tXHUwMGVkYSA0IiwgIjYxMDYiXSwgWzQzLjI2NzgxMTk1Nzg0NjcyLCAtMi45Mzk3Mjk0OTkyODk3MDMsICJEZXVzdHVrbyBadWJpYSAvIFp1YmlhcnRlIiwgIjYxMDciXSwgWzQzLjI2MjMyNTEyNzQwNzQsIC0yLjkzNDU5OTY4OTE5OTYyMjcsICJFbGNhbm8gKDkpIiwgIjYxMDgiXSwgWzQzLjI2NTQ3NzQ2ODUwMTg2NCwgLTIuOTM2ODAwMDA5OTU1NDg0MywgIkVsY2FubyAyIiwgIjYxMDkiXSwgWzQzLjI2MzkzMDk5MDg3ODMzNiwgLTIuOTM1NTU2OTM2NTU1NTEzLCAiRWxjYW5vIDMiLCAiNjExMCJdLCBbNDMuMjYxMjE5NjU4NzUsIC0yLjkzNDEwMTI4NTk0MDU2LCAiR3JhbC4gQ29uY2hhIDIgLyBQLkVndWlsbG9yIiwgIjYxMTEiXSwgWzQzLjI1ODE4Mjk2MDU1MDM2NCwgLTIuOTM1MzQ3NzQ4NjQzMjk5NSwgIkdyYWwuIENvbmNoYSAyNiIsICI2MTEyIl0sIFs0My4yNjE1Mjk5NDY0MDAxNzQsIC0yLjkyODQ3NjU4MDg4NDY1MTMsICJHcmFuIFZcdTAwZWRhIDciLCAiNjExMyJdLCBbNDMuMjYyNzA5ODY3MzkwOTcsIC0yLjkzMzQ1NzIzODcwMjE1NzQsICJHcmFuIFZcdTAwZWRhIDM2IiwgIjYxMTQiXSwgWzQzLjI2MjY5MDc2MTk3NzAzLCAtMi45MzM3NTA5OTY0MzE1NTksICJHcmFuIFZcdTAwZWRhIDM3IiwgIjYxMTUiXSwgWzQzLjI2MzI4OTcyNTMzOTU1LCAtMi45MzU5ODcyNzQzNDczODM0LCAiR3JhbiBWXHUwMGVkYSA0MCIsICI2MTE2Il0sIFs0My4yNjE3MzI1ODgyNjEyOCwgLTIuOTI4OTY3MDQxMzg1NjQ4MywgIkdyYW4gVlx1MDBlZGEgOCIsICI2MTE3Il0sIFs0My4yNjA2MzY2MDI1NDc4MiwgLTIuOTI3OTk4NzIwNjE2NzYsICJIdXJ0YWRvIEFtXHUwMGU5emFnYSAxIC8gR2VsdG9raWEtRXN0YWNpXHUwMGYzbiIsICI2MTE4Il0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2LCAiSHVydGFkbyBBbVx1MDBlOXphZ2EgMiAvIChHZWx0b2tpYS1Fc3RhY2lcdTAwZjNuKSIsICI2MTE5Il0sIFs0My4yNTc5MTQ2MjE2NTU3OCwgLTIuOTMyODIyMjYyMjg4MDkxLCAiSHVydGFkbyBBbVx1MDBlOXphZ2EgMTUiLCAiNjEyMCJdLCBbNDMuMjU3NTkyOTMwMTE2NzIsIC0yLjkzMzUzNDI5MDA2MDQ0MTMsICJIdXJ0YWRvIEFtXHUwMGU5emFnYSA1MCIsICI2MTIxIl0sIFs0My4yNjMwNjEzNjY1NzkwNjYsIC0yLjkyNzQ1MjExMDk4MzI2NTQsICJJYlx1MDBlMVx1MDBmMWV6IGRlIEJpbGJhbyAxNCIsICI2MTIyIl0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzLCAiSnVhbiBkZSBHYXJheSA3IiwgIjYxMjMiXSwgWzQzLjI2MjYwMjIzNjUwNjU5NSwgLTIuOTI5MjY5Mzk2MjMwNTg4NSwgIk1hemFycmVkbyAzIiwgIjYxMjQiXSwgWzQzLjI2NTg2NDczNjE3MzgzLCAtMi45MzY5ODIyMDg0NjgzMjE3LCAiTXVzZW8gMSAvIEhlbmFvIiwgIjYxMjUiXSwgWzQzLjI2MTQ0ODE2ODIwNTc5LCAtMi45MjcxOTAxNzQ2MzQ4Njg3LCAiUGxhemEgQmlyaWJpbGEgLyBHcmFuIFZcdTAwZWRhIiwgIjYxMjYiXSwgWzQzLjI1OTc5NjQ4MjQxMjI4NCwgLTIuOTMyNTA4MjE2MTE4MjQxLCAiVXJxdWlqbyAxNCAvIEluc3RpdHV0b2EiLCAiNjEyOCJdLCBbNDMuMjU5MTE4ODE2MDc5MjgsIC0yLjkzNzUwNjQyMjY5NTM4MTMsICJBbGRhIFNhbiBNYW1cdTAwZTlzICgzMykiLCAiNjIwMSJdLCBbNDMuMjU3NDgyMTI0MTMxMiwgLTIuOTM3ODU5MTEzMDc5MjI1LCAiQXV0b25vbVx1MDBlZGEgMjIiLCAiNjIwMiJdLCBbNDMuMjU3NzE4NjQwNDQyNCwgLTIuOTQyNzM4MDAyMzI2OTk0NSwgIkF1dG9ub21cdTAwZWRhIDUwIiwgIjYyMDMiXSwgWzQzLjI2NzU3NjMyMTU2ODE4NSwgLTIuOTM5MzcwMDU2NjIwNDU2LCAiRGV1c3R1a28gWnViaWEiLCAiNjIwNCJdLCBbNDMuMjYzMTY5MTIzNzgwMjgsIC0yLjkzNjA1MjAxMjUwNTkzODYsICJHcmFuIFZcdTAwZWRhIDQxIiwgIjYyMDUiXSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3LCAiR3JhbiBWXHUwMGVkYSA0MyIsICI2MjA2Il0sIFs0My4yNjQyMTM1ODUxMzQ5MywgLTIuOTQwMTk4OTQ2ODMyNDY0NSwgIkdyYW4gVlx1MDBlZGEgNjIiLCAiNjIwNyJdLCBbNDMuMjY0MTQ3NDY5MTg4Nzg1LCAtMi45NDA1MTk1NDA0ODE0NjcsICJHcmFuIFZcdTAwZWRhIDYzIiwgIjYyMDgiXSwgWzQzLjI2MzY0NDYyMjM5OTU0NiwgLTIuOTM5Mjg2MjQ1ODEyNDEwNSwgIkdyZWdvcmlvIGxhIFJldmlsbGEgMiIsICI2MjExIl0sIFs0My4yNjExNzEyMTI1NDMxMywgLTIuOTQwMjcxOTczOTg4NDg2NCwgIkdyZWdvcmlvIGxhIFJldmlsbGEgMjIiLCAiNjIxMiJdLCBbNDMuMjU4NjAzODU4MDI5MDMsIC0yLjk0MTI1MjE2MjEwMzE0NTYsICJHcmVnb3JpbyBsYSBSZXZpbGxhIDM1IiwgIjYyMTMiXSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxNywgIkdyZWdvcmlvIGxhIFJldmlsbGEgMzYiLCAiNjIxNCJdLCBbNDMuMjYwNjQwOTAyNzk5NTUsIC0yLjkzNzM5NDY3NDYzNzU1NjgsICJJcGFycmFndWlycmUgKDQyKSAvIEJpemthaWEgcGwuIiwgIjYyMTUiXSwgWzQzLjI2MjgwNDUxNTc2NzgxLCAtMi45MzY0OTE5NTY1MDk3NDIzLCAiSXBhcnJhZ3VpcnJlIDI5IiwgIjYyMTYiXSwgWzQzLjI2Mjg4MzI5NDE5Nzk3LCAtMi45MzU2Mzc1MTczMDA5NjksICJNb3lcdTAwZmFhIDQiLCAiNjIxOSJdLCBbNDMuMjYxMzUzMTg3MzQ1MTE1LCAtMi45NDE5OTk4NTk4NTI3ODUsICJVcnF1aWpvIDY4IiwgIjYyMjEiXSwgWzQzLjI2MjE1MzEwMzkyNTA5NCwgLTIuOTQ1NjQ5MDM3NDYyNDkxNywgIlVycXVpam8gOTIiLCAiNjIyMiJdLCBbNDMuMjU5OTE3NjEyMTI3MzUsIC0yLjk0MDA3ODU1NDQ4MjQ1NDQsICJVcnJ1dGlhIDEiLCAiNjIyMyJdLCBbNDMuMjY0Nzk3Nzg4MDE5NTEsIC0yLjk0Mjg3NDgzOTU4NzI2NywgIkdyYW4gVlx1MDBlZGEgNzQgLyBCYXN0ZXJyYSIsICI2MjI0Il0sIFs0My4yNjAyODQzNjkxOTY0MDUsIC0yLjkzNzA4MzA4NjU0OTUyMTcsICJVcnF1aWpvIC8gQml6a2FpYSBwbC4iLCAiNjIyNiJdLCBbNDMuMjU4Mjg3NDE1MDU1OTgsIC0yLjk0NTY0NDY1NDk0MDEzMjUsICJNYXJcdTAwZWRhIERcdTAwZWRheiBkZSBIYXJvICg1NykiLCAiNjIyOCJdLCBbNDMuMjU4MDY0NDUwNDMwNTI0LCAtMi45Mzg1MjcyNjY5OTMwMDA3LCAiSXBhcnJhZ3VpcnJlIDYzIiwgIjYyMjkiXSwgWzQzLjI1NDQwNjc4NzY1MzUsIC0yLjk0MzQ2NjkyMzc0NTYxLCAiQW1ldHpvbGEiLCAiNzEwMSJdLCBbNDMuMjU3MjIyNzQ0OTUyNTEsIC0yLjkzNTMwMzUyNjE3MDQ4OCwgIkF1dG9ub21cdTAwZWRhIDEiLCAiNzEwMiJdLCBbNDMuMjU3MzMyMjU0MjA0NiwgLTIuOTM3NjEwNTQ4Mzk3MTUxLCAiQXV0b25vbVx1MDBlZGEgMTMiLCAiNzEwMyJdLCBbNDMuMjU3NTg3NTM3NzA0MTA0LCAtMi45NDI1MjM4NTg2Nzg0MzUsICJBdXRvbm9tXHUwMGVkYSA0MyIsICI3MTA0Il0sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1LCAiR29yZG9uaXogMjIiLCAiNzEwNiJdLCBbNDMuMjU2NjQ3MzE1NjAxNTUsIC0yLjk0MjI2NTEyMjMyMTI3MDQsICJHb3Jkb25peiAzOSIsICI3MTA3Il0sIFs0My4yNTY4NDA2MzA2MzUxNDYsIC0yLjkzNDk4NDcxNTg0Nzc1ODQsICJQZWRybyBNYXJ0XHUwMGVkbmV6IEFydG9sYSAyIiwgIjcxMDgiXSwgWzQzLjI1MTQ3NTk3NjAyMTgyLCAtMi45MzU3MzcwMDg1NzAxMDg3LCAiQmVyZ2FyYSAoMTIpIiwgIjcyMDEiXSwgWzQzLjI1NDkwNTA4NzY3NTUzLCAtMi45MzYyODUxNzI5NjY3NzIsICJJcmFsYSAoMTkpIiwgIjcyMDMiXSwgWzQzLjI1MjAxNjEyODQ1NTg2LCAtMi45Mzc2MTY0NjAyODY1OTQsICJJcmFsYSAoNTMpIC8gRXNrdXJ0emUiLCAiNzIwNCJdLCBbNDMuMjUzMjczMjQ1NDcwMjQsIC0yLjkzNzU1NzQzNTg4NzAxNjIsICJJcmFsYSAyOCIsICI3MjA1Il0sIFs0My4yNTEyNzk3OTgzNjMxOSwgLTIuOTM0NjkzNjM2MTY3MzkyMywgIkp1YW4gZGUgR2FyYXkgLyBHaVx1MDBmMWEgRXN0cmF0YSIsICI3MjA2Il0sIFs0My4yNTM4NDk3MjMwNTU3NSwgLTIuOTM0MDI3ODk0MDQwNTAwNywgIkp1YW4gZGUgR2FyYXkgLyBHb2IuTWlsaXRhcnJhIiwgIjcyMDciXSwgWzQzLjI1MzEyOTgyNDc0MDM5LCAtMi45MzU0ODQ0NjYxMjY4OTQ2LCAiTW9uYXN0ZXJpbyA1IiwgIjcyMDgiXSwgWzQzLjI1MDgxNDQ4NTQzNTk2LCAtMi45MzU3NDYzNjUxNTEwODgsICJSb3RvbmRhIEVza3VydHplIiwgIjcyMDkiXSwgWzQzLjI1NDU3NDE5NDMxNzExNSwgLTIuOTM0NTc2NDMzNzA2NzQxLCAiVXJpemFyIDI0IC8gR29iLk1pbGl0YXJyYSIsICI3MjEwIl0sIFs0My4yNDY0NDE4NTQ4MjE4OSwgLTIuOTQyMDczMjQwNTA5OTE5NywgIkFydGF6dWdvaWtvYSIsICI3MzAxIl0sIFs0My4yNTI1Mjc3MTIwMzgyMSwgLTIuOTQ1MDc0MjAxNjI3MDA3LCAiQmVuaXRvIEFsYmVyZGkgKDYpIiwgIjczMDIiXSwgWzQzLjI1MTYwODgyMTI4ODUyLCAtMi45NDc1ODg0MzMzNzU1MDA1LCAiQ2FtaWxvIFZpbGxhYmFzbyAoMjcpIiwgIjczMDMiXSwgWzQzLjI1MjU1MDY5OTE4MzksIC0yLjk0NTU1MzA4Nzg1NjM3MiwgIkNpdWRhZGVsYSAxIiwgIjczMDQiXSwgWzQzLjI1MjIwNDIxMTg0NzAxLCAtMi45NDUwMDQ3MzQ4Njg2OTg3LCAiQ2l1ZGFkZWxhIDJBIiwgIjczMDUiXSwgWzQzLjI1MTc5MTY0ODE4MTM3NCwgLTIuOTQ0MDA4MDIyOTU0MzIyLCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgMSIsICI3MzA2Il0sIFs0My4yNTA5NDU2NzM5MDQ2NzQsIC0yLjk0MjE1OTIzMDk0Mjg1OTIsICJFcnJla2FsZGUtTGFycmFza2l0dSAyMyIsICI3MzA3Il0sIFs0My4yNTIyNTY2NDM2ODY3NiwgLTIuOTQ2MTgzMzMxODg1Nzg5LCAiR29yZG9uaXogKDU0KSAvIFB6YSBFcnJla2FsZGUiLCAiNzMwOCJdLCBbNDMuMjQ5NDE2OTc4MDE4NDk1LCAtMi45NDY2MTE2NDM0MTI2OTA2LCAiR29yZG9uaXogKDkwKSIsICI3MzA5Il0sIFs0My4yNTQzNjQwMTI5NTkwNSwgLTIuOTQ0NzE4NTAxNTg4MTExNCwgIkdvcmRvbml6IDM2IiwgIjczMTAiXSwgWzQzLjI1NDMzMDgzMDMzNzQsIC0yLjk0NDU5NDM5OTk0MTc1ODMsICJHb3Jkb25peiA0OUEiLCAiNzMxMSJdLCBbNDMuMjUyNDY2MzE1NDc5NjIsIC0yLjk0NjI0NzYwMjUzOTgwMSwgIkdvcmRvbml6IDU0IC8gKFB6YSBFcnJla2FsZGUpIiwgIjczMTIiXSwgWzQzLjI0OTQyMzQxOTc4NDYxLCAtMi45NDY5ODY3NjQ3ODI3MDc3LCAiR29yZG9uaXogOTAiLCAiNzMxMyJdLCBbNDMuMjUyODg5NTM1NzQzOTU0LCAtMi45NDY0Nzk4MDQyMDM1NDY1LCAiR295YSA3IiwgIjczMTQiXSwgWzQzLjI1MjgwMjczODA4NjU1LCAtMi45NDMxNzgyMTE1NTU5NDI2LCAiSmFlbiA3IiwgIjczMTYiXSwgWzQzLjI0NjY4NDI0NzU5MDA3NSwgLTIuOTQxNjQ3Mzc5Mzc3MDMzLCAiQXJ0YXp1Z29pa29hIC8gRXNrb2xhIiwgIjczMjAiXSwgWzQzLjI0NjE3NjUxOTk2NTIzLCAtMi45NDA5NjYzNjg2NzIxMDIsICJLYXJpdGF0ZWtvIEFsYWJlbiAzIiwgIjczMjIiXSwgWzQzLjI0NjUzODQ5MTIzMDc5NCwgLTIuOTQxMDM3OTU5NjcxMjM4NiwgIkthcml0YXRla28gQWxhYmVuICgzKSIsICI3MzIzIl0sIFs0My4yNDk2ODUzMzc3OTQ5MzYsIC0yLjk0MTk2NzYxNDMzODU2NjIsICJBcnRhenViZWtvYSIsICI3NDAxIl0sIFs0My4yNTA1ODE1MzA4ODc3MzYsIC0yLjk0MjMwNzc3ODE5OTYzNjMsICJBcnRhenViZWtvYSAoMTApIiwgIjc0MDIiXSwgWzQzLjI1MDA0NzA0NjMwNDE0LCAtMi45NDE4Nzc3NzA2NzczNCwgIkFydGF6dWJla29hIDI3IiwgIjc0MDMiXSwgWzQzLjI0ODkzODgzMzI0NjM1NiwgLTIuOTM5ODMxNDYxNTI4OTAxNiwgIkVycmVrYWxkZS1MYXJyYXNraXR1ICgzNikiLCAiNzQwNCJdLCBbNDMuMjQ0OTI4MTc4NzgyNTYsIC0yLjkzMzc0MzIxNTIyMDA2MSwgIkVycmVrYWxkZS1MYXJyYXNraXR1IC8gKEliZXJkcm9sYSkiLCAiNzQwNSJdLCBbNDMuMjQ1NjM2NzkzNTE1MDMsIC0yLjkzNzE0MDkwOTU4NjA0MSwgIkVycmVrYWxkZS1MYXJyYXNraXR1IC8gKEtpcm9sZGVnaWEpIiwgIjc0MDYiXSwgWzQzLjI0NDg4NTk0NzM1ODQ5LCAtMi45MzM1MjI4MTE0NjU2OTM3LCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgLyBJYmVyZHJvbGEiLCAiNzQwNyJdLCBbNDMuMjQ1OTI3MDAwMjIxMTQsIC0yLjkzODA3NzA4NzA3MjQwNjQsICJFcnJla2FsZGUtTGFycmFza2l0dSAvIEtpcm9sZGVnaWEiLCAiNzQwOCJdLCBbNDMuMjUwODU1NDUzNTU0NjE0LCAtMi45NDIxNzMzMjQ0MzM1OTU1LCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgMTQiLCAiNzQwOSJdLCBbNDMuMjUxNDU0NDUwMzkyMDI1LCAtMi45NDM0NjUxNzc4OTc5MjYsICJFcnJla2FsZGUtTGFycmFza2l0dSAyIiwgIjc0MTAiXSwgWzQzLjI0ODkwODk5MDcwMzE0LCAtMi45Mzk5MjI2NzIwMzMyOTIzLCAiRXJyZWthbGRlLUxhcnJhc2tpdHUgMzYiLCAiNzQxMSJdLCBbNDMuMjQxOTQ3Mzc3NjIzMDQsIC0yLjkzNDQwMjcwNDUxMzAxMTQsICJMYXJyYXNraXR1YmlkZWEgLyBFc3RyYWRhIEJlaXRpIiwgIjc0MTIiXSwgWzQzLjI0Mjg1ODY3OTg3Mjc5NiwgLTIuOTM2NzQ1MDU1MjM4MzE2NywgIkxhcnJhc2tpdHViaWRlYSA4OCIsICI3NDEzIl0sIFs0My4yNDIxOTM5OTc3MzYwMiwgLTIuOTQwMzQ5OTkxOTM2MjQzMiwgIkxhcnJhc2tpdHViaWRlYSA5OCIsICI3NDE0Il0sIFs0My4yNDI4NDk4MDg0MTUzLCAtMi45MzIwODc1NjY5NzEwNjkzLCAiU2FuIEFkcmlcdTAwZTFuIDQ4IiwgIjc0MTUiXSwgWzQzLjI0NTE4MDk1OTc1NjU5NSwgLTIuOTM4NTYxMjA1NzQ5OTczLCAiS2FyaXRhdGVrbyBBbGFiZW4gNDgiLCAiNzQxNiJdLCBbNDMuMjQ1MjExMzE1OTYzMiwgLTIuOTM4MjgyNzY1MDE2MTgxNiwgIkthcml0YXRla28gQWxhYmVuICg0NikiLCAiNzQxNyJdLCBbNDMuMjUxODg4OTY2NzQyOTc1LCAtMi45NDg5MTE1NDYzNzM5MTU3LCAiQWx0dWJlIDEyIiwgIjc1MDEiXSwgWzQzLjI0OTA3NjkxNzM3MTY3NCwgLTIuOTUwMjcwMjg0NDc5MzY4LCAiQmV0b2xhdHphIDQxIiwgIjc1MDIiXSwgWzQzLjI0Nzk3NTc3NDU1OTM2NCwgLTIuOTUwNjQ0MDkzMDc1MzIzNSwgIkJldG9sYXR6YSA1MSIsICI3NTAzIl0sIFs0My4yNTEyMTk5ODQ4MTE0NywgLTIuOTQ4ODc2NzIwNDc2NTczLCAiQ2lyY3VudmFsYWNpXHUwMGYzbiAxIiwgIjc1MDgiXSwgWzQzLjI0OTgxODk0NzUyOTc1NCwgLTIuOTQ5NDk0MDU3OTU4ODkxNSwgIkNpcmN1bnZhbGFjaVx1MDBmM24gMTIiLCAiNzUwOSJdLCBbNDMuMjQ4NjUzODQzOTA5NjQsIC0yLjk0OTMwMjMxMjI5NDk3MTUsICJVcmV0YW1lbmRpIC8gUGxhemEiLCAiNzUxMCJdLCBbNDMuMjQ1ODI1ODcxNTc5NDIsIC0yLjk0ODY5MjY4MzUwODg2NCwgIkl0dXJyaWdvcnJpYmlkZWEgKDQ1KSIsICI3NjAxIl0sIFs0My4yNDY5MzEyMDM2MTUxNiwgLTIuOTQ4MjYzOTE5NDc0MjA0NiwgIkl0dXJyaWdvcnJpYmlkZWEgMzciLCAiNzYwMiJdLCBbNDMuMjQzMTk5NjIxNzAxMzY1LCAtMi45NDkwODQ5MTA5ODI4ODAzLCAiUGVcdTAwZjFhc2NhbCAoMTYpIC8gRWxpemEiLCAiNzYwMyJdLCBbNDMuMjQwMTE0NzA1NTIzOTksIC0yLjk0OTczMzA3NzA1NDc5NSwgIlBlXHUwMGYxYXNjYWwgKDI5KSIsICI3NjA0Il0sIFs0My4yNDM0MzQ1NjUwOTQ5MiwgLTIuOTQ5MDcwNzc2NjkwNDY0LCAiUGVcdTAwZjFhc2NhbCAxNiAvIChFbGl6YSkiLCAiNzYwNSJdLCBbNDMuMjQwNDU4OTAzMzU5MSwgLTIuOTQ5NjU0MDg5MjQ3OTczNywgIlBlXHUwMGYxYXNjYWwgMjkiLCAiNzYwNiJdLCBbNDMuMjM4NzY3OTkyNDEzNTMsIC0yLjk0ODQ3ODQwOTUwNjI2OCwgIlBlXHUwMGYxYXNjYWwgKDE0NikgLyBSb3RvbmRhIiwgIjc3MDEiXSwgWzQzLjI0MDM2ODgyMTg1MDI5LCAtMi45NDQ0OTU1MTI4ODgzNjU0LCAiU2FuIEp1c3RvIiwgIjc3MDIiXSwgWzQzLjIzOTgwNTc5NDE5MDk1LCAtMi45NDI4NTIzNDM5NTAxMzk3LCAiU2FuIEp1c3RvICg1KSIsICI3NzAzIl0sIFs0My4yNDAwMDczNjg3MjI1OTQsIC0yLjk0MzA3NDg4NjMwNTU0MDcsICJTYW4gSnVzdG8gMTIiLCAiNzcwNCJdLCBbNDMuMjU4NjI2Njg3Njk5MTA2LCAtMi45NTE5MzY4MDI1MzMzNjM3LCAiQmFzdXJ0dWJla29hIC8gKElwYXJyYWxkZSkiLCAiODEwMyJdLCBbNDMuMjU4NDY1MTYzNjMwMTQsIC0yLjk1MTkyMjgzNDk4NjgxNjcsICJCYXN1cnR1YmVrb2EgLyBJcGFycmFsZGUiLCAiODEwNCJdLCBbNDMuMjYxMDA0NTk5OTg5MTg1LCAtMi45NTY1NzkwODc3NjI1MjQ0LCAiQmFzdXJ0dS1LYXN0cmV4YW5hICg2NSkiLCAiODEwNSJdLCBbNDMuMjYwNjc1OTc0NDU4NTIsIC0yLjk1NTk0ODE0ODc5MTY5MiwgIkJhc3VydHUtS2FzdHJleGFuYSA2MyIsICI4MTA2Il0sIFs0My4yNTk5Njg4ODg2MTI3OTYsIC0yLjk1MTIzNzY2NjE1Mjg3MzYsICJHdXJ0dWJheSAvIE9zcGl0YWxlYSIsICI4MTA3Il0sIFs0My4yNTk0NjAwNDMzMDAxNSwgLTIuOTUyMjY5MTkzMzg1ODUzNCwgIk1vbnRldmlkZW8gLyAoR3VydHViYXkpIiwgIjgxMTAiXSwgWzQzLjI2MjU0NzA5MTA5MzAwNSwgLTIuOTU2MzI4OTUzNDE4MjUzMywgIk1vbnRldmlkZW8gLyBTYW50YSBBbmEiLCAiODExMyJdLCBbNDMuMjU3NDc1MDkyMjczMzUsIC0yLjk0NjA3NDI2NDY3NDIxMywgIlRyZW5iaWRla28gRXRvcmJpZGVhIC8gQXV0b25vbVx1MDBlZGEiLCAiODExNyJdLCBbNDMuMjU4MDAwMTkyNzg5NiwgLTIuOTQ5MDUyNTI5MTI5NjIxNSwgIkJhc3VydG8gLyBCcmlcdTAwZjFhcyIsICI4MTIyIl0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5MywgIkJhc3VydG8gLyBBaXRhIERvbm9zdGlhIiwgIjgxMjMiXSwgWzQzLjI2NDY4Mjg1OTgwNDM0NiwgLTIuOTUzNDA4NDk1NjkxNTQzNCwgIkNcdTAwYmEgVmVudG9zYSA0NiIsICI4MjAzIl0sIFs0My4yNjI4MTY1NjAzMDMyOCwgLTIuOTU2Mzk5NzU3NTMxNjA1NywgIk1vbnRldmlkZW8gLyAoU2FudGEgQW5hKSIsICI4MjA0Il0sIFs0My4yNjQ5NzIxMTUzNTE2OSwgLTIuOTYxMjIxMDc0NjEzMDI0MywgIk1vbnRldmlkZW8gLyBPbGFiZWFnYSIsICI4MjA1Il0sIFs0My4yNjUyODA0NzcxMjIxMywgLTIuOTUyMzgwMjMxMjEzNDgwNiwgIk9sYWJlYWdhIC8gKERpa2VhKSIsICI4MjA2Il0sIFs0My4yNjUyNjQ2OTQyMjYyNSwgLTIuOTUyMTk2MzExNzI5NDI4MywgIk9sYWJlYWdhIC8gRGlrZWEiLCAiODIwNyJdLCBbNDMuMjY0OTExMTQ2NzI1NzgsIC0yLjk1NTA3MDE0Nzc3Nzc3MywgIk9sYWJlYWdhIDIyQSIsICI4MjA4Il0sIFs0My4yNjQ3NTk3OTczMzgzMTQsIC0yLjk1Nzc5MTg2OTc1MTUzMzcsICJPbGFiZWFnYSAzMCIsICI4MjA5Il0sIFs0My4yNjUwMjgyOTAxMzA3MzYsIC0yLjk1ODkxMjU2OTI4MDYzMTcsICJTYW4gTmlrb2xhcyBPbGFiZWFnYSAoMjcpIiwgIjgyMTAiXSwgWzQzLjI2NDQ2MTQ4NDY0OTEsIC0yLjk1NTg0MTgwNTI0MDQxOCwgIlNhbiBOaWtvbGFzIE9sYWJlYWdhIDIyIiwgIjgyMTEiXSwgWzQzLjI2NjA3NDc4MTM2NDUzLCAtMi45NjA2NTg4NjQ2MTY2OTQsICJTYW4gTmlrb2xhcyBPbGFiZWFnYSA1OCIsICI4MjEyIl0sIFs0My4yNTgwMzk0NTA2MDEzOTUsIC0yLjk1NDE1MjcyNjkyMDUyMywgIkF1bnR6ZXR4ZXRhICgxOCkiLCAiODMwMSJdLCBbNDMuMjU3NzcxOTA2MzQ3MDEsIC0yLjk1NDA0MzUxMTUwMzQwMzYsICJBdW50emV0eGV0YSAxOCIsICI4MzAyIl0sIFs0My4yNTgzNTc4NTgyNjI5MSwgLTIuOTU1NzU3MDYxMDkyNzA3NSwgIkF1bnR6ZXR4ZXRhIDQiLCAiODMwMyJdLCBbNDMuMjU4NDA3MTA1NDcyMjMsIC0yLjk1NTgzOTU2OTc1Njc3NiwgIkF1bnR6ZXR4ZXRhIDciLCAiODMwNCJdLCBbNDMuMjU1ODc4Njg5MzQ1MjcsIC0yLjk1Mzg5NjgzODEyNzMwMTYsICJCYXN1cnR1Z29ydGEgMSIsICI4MzA1Il0sIFs0My4yNTY5NzE1OTk3NTQ5OSwgLTIuOTYwMjc5ODY5MTIyMTQzNSwgIktvYmV0YSBNZW5kaWEgKDQxKSAvIE1pcmFkb3IiLCAiODMwNiJdLCBbNDMuMjU1Nzk3MTUyMzQxMzE2LCAtMi45NTk2NjM4ODEzNTY2NTQ3LCAiS29iZXRhIE1lbmRpYSAvIEFjYy5CYXJyaW8iLCAiODMwNyJdLCBbNDMuMjU4OTMyNzQwMDIwMDMsIC0yLjk1Njc1NzA1NjYxMjc0NDMsICJMZXplYWdhIDE0IiwgIjgzMDgiXSwgWzQzLjI1ODkwMDE4MjI1NzI5LCAtMi45NTYzOTM1NTI3OTU3Njg1LCAiTGV6ZWFnYSA5IiwgIjgzMDkiXSwgWzQzLjI1Mzg1MTAxOTM2MDIwNSwgLTIuOTU5MzE3MjE0OTQ5Mjg1LCAiTWFzdXN0ZWdpIEVzdHJhdGEgLyBFc2thaWxlcmFrIiwgIjgzMTAiXSwgWzQzLjI1MzY2NzE4MzM2OSwgLTIuOTU2NjA5OTE5MjE2MDY1OCwgIk1hc3VzdGVnaSBFc3RyYXRhIC8gRXNrb2xhIiwgIjgzMTEiXSwgWzQzLjI1MjY2MDkyNTkyNTc3LCAtMi45NTUzNDkxOTkzMTA3Nzg2LCAiTWFzdXN0ZWdpIEVzdHJhdGEgLyBNaW50ZWdpdHh1ZXRhIiwgIjgzMTIiXSwgWzQzLjI1NTgzMDYxMzc0OTQ5NSwgLTIuOTUzODM5MjgxMTM4MDY0MywgIk1hc3VzdGVnaSBFc3RyYXRhIDMgQmlzIiwgIjgzMTMiXSwgWzQzLjI1MzUwNDgxNzcyNDUwNSwgLTIuOTUzMDUzNzgxNDE2Njg2NiwgIk1pbnRlZ2l0eHVldGEiLCAiODMxNCJdLCBbNDMuMjU3MDIxMjUxNjY5MTEsIC0yLjk1NTEzNDk4NzQ5MjMyMiwgIkxlemVhZ2EgMjUiLCAiODMxNiJdLCBbNDMuMjY0NzI0NjgwNzU5MDgsIC0yLjk2MTE0OTkwMTQ2NjAyMTYsICJNb250ZXZpZGVvIC8gKE9sYWJlYWdhKSIsICI4MzE3Il0sIFs0My4yNjE4MTY3NDY2NjkwOCwgLTIuOTU5OTQ5NjQ1NTMxNDkxLCAiQmFzdXJ0dS1LYXN0cmV4YW5hICgxMjUpIC8gQWxiZXJndWUiLCAiODQwMSJdLCBbNDMuMjYzMzA4MDUxODE3MTYsIC0yLjk2MjQwMTE0NjEzMjc1NCwgIkJhc3VydHUtS2FzdHJleGFuYSAvIEFsdGFtaXJhIiwgIjg0MDIiXSwgWzQzLjI2MTE1MzgwMDkyNTcyLCAtMi45NTk1MjYxMzE1MDE5OTYzLCAiQmFzdXJ0dS1LYXN0cmV4YW5hIDg1IiwgIjg0MDMiXSwgWzQzLjI2MTcyOTMzNTU3NjcyNSwgLTIuOTY1MDI4NDY0MjY3MDI3NywgIktvYmV0YWJpZGVhIC8gQWx0YW1pcmEiLCAiODQwNCJdLCBbNDMuMjc3NDcwNDEyNzcyMzUsIC0yLjk3NDk0OTY5NDI1NDcyNTMsICJGcmF5IEp1YW4gMzUiLCAiODUwMSJdLCBbNDMuMjc2NjQ4MzIzMjk0OTM1LCAtMi45NzIxNjA1ODE1MDY5ODg1LCAiRnJheSBKdWFuIDExIiwgIjg1MDIiXSwgWzQzLjI3MzM5OTM0Njk0ODM5NSwgLTIuOTcwNjI4NjkzMTgxMjAzNiwgIlphenBpbGFuZGEgLyBCaWRlZ2FpbiIsICI4NTAzIl0sIFs0My4yNzE5NjQ5OTcwNjQ5MzQsIC0yLjk2OTQzNjQwNjQ4MDc4NjMsICJaYXpwaWxhbmRhIC8gTWVuZGlnYWluIiwgIjg1MDQiXSwgWzQzLjI3MjE4NzQwMTA0MjI1LCAtMi45NjkyNDE4ODY2NDk1NzI3LCAiWmF6cGlsYW5kYSAvIFBpbmFkaWEiLCAiODUwNSJdLCBbNDMuMjczMjA2NTU4OTg2MjgsIC0yLjk3MTU3NjE0OTM0ODIyNCwgIlphenBpbGFuZGEgNyIsICI4NTA2Il0sIFs0My4yNzExMjM4ODUzMzAxMzQsIC0yLjk3MDk5NjI4MDY5NTAxNDgsICJab3Jyb3R6YWJhc28gKDEyKSIsICI4NTA3Il0sIFs0My4yNzE1NTQyMjE2NjkyODQsIC0yLjk3NDM3MjUzMDY3MDczNywgIlpvcnJvdHphLUthc3RyZXhhbmEgLyAoQ2l1ZGFkIEphcmRcdTAwZWRuKSIsICI4NTA4Il0sIFs0My4yNzUwMTc4NzEzMzU0NCwgLTIuOTcyNzE2OTk5ODA4ODMyNywgIlpvcnJvdHphLUthc3RyZXhhbmEgMjUiLCAiODUwOSJdLCBbNDMuMjcyMTkwNTUyODk2OTY2LCAtMi45NzQxMTkxMzQ2Mzk5NTQzLCAiWm9ycm90emEtS2FzdHJleGFuYSA3NyIsICI4NTExIl0sIFs0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3LCAiQWx0YW1pcmEiLCAiODYwMSJdLCBbNDMuMjYzNjk5MDMwNzMwMzIsIC0yLjk2MjYwNDcwNDEzODA5MSwgIkJhc3VydHUtS2FzdHJleGFuYSAvIChBbHRhbWlyYSkiLCAiODYwMiJdLCBbNDMuMjU4NjU3MzM1NTAwNzksIC0yLjk2MjM0MjM2NjE0NjU1NjcsICJLb2JldGEgTWVuZGlhIDMzIiwgIjg2MDQiXSwgWzQzLjI2NDA5NjkwMTg2NzI4LCAtMi45NjUzNTE3MTE1NDA0Mjg0LCAiS29iZXRhYmlkZWEgMTA0IiwgIjg2MTAiXSwgWzQzLjI2Nzk1NzczNTI2Mjg2LCAtMi45NjgzMjY5NDExMzE4NzY3LCAiS29iZXRhYmlkZWEgMTkzIC8gQWx0byBLYXN0cmV4YW5hIiwgIjg2MTEiXSwgWzQzLjI2MTQwMDA1NTEyMTE4NiwgLTIuOTcxNDMxMjQ0MzIwNTIzNywgIlpvcnJvdHphLUthc3RyZXhhbmEgLyAoU3RhLlx1MDBjMWd1ZWRhKSIsICI4NjE0Il0sIFs0My4yNjQ0NzY0MzY0MDg5MywgLTIuOTczNjIwMzUyMDQzMTU3LCAiWm9ycm90emEtS2FzdHJleGFuYSAvIEV0eGViYXJyaWEiLCAiODYxNSJdLCBbNDMuMjU1MDg3MjQyNjEyOTUsIC0yLjk3MjQwNzUwNDk0MzI1NiwgIlpvcnJvdHphLUthc3RyZXhhbmEgLyBQdGUuRGlhYmxvIiwgIjg2MTYiXSwgWzQzLjI2MTM0NDQ3NTIxNjI5LCAtMi45NzE0OTIyMDA0ODE5OTcsICJab3Jyb3R6YS1LYXN0cmV4YW5hIC8gU3RhLlx1MDBjMWd1ZWRhIiwgIjg2MTciXSwgWzQzLjI1NjkwNDk0NjkwNzU0LCAtMi45NzA1MDk3NDk0MTEwNjg2LCAiWm9ycm90emEtS2FzdHJleGFuYSAxODUiLCAiODYxOCJdLCBbNDMuMjU4Mjk2MTM3NjQwMjg2LCAtMi45Njk2NjUyODkzNDc4Mzg2LCAiWm9ycm90emEtS2FzdHJleGFuYSAyMDAiLCAiODYxOSJdLCBbNDMuMjU1Njk2OTI3MzM0NTc2LCAtMi45NzM0NDE0NjM2NDgwOTkyLCAiWnViaWxldGEgNzQiLCAiODYyMCJdLCBbNDMuMjQ0MTk5NTIzODM2OTI2LCAtMi45MTczNjk0NTQ3MDgyMjM0LCAiQ2FtaW5vIGRlbCBQb250XHUwMGYybiAvIChJa2FzdG9sYSkiLCAiNDMwNiJdLCBbNDMuMjQ2NDcyMzMyODMyMzI2LCAtMi45MDkyMjk0NDIzNTQzMjksICJDYW1pbm8gZGVsIFBvbnRcdTAwZjNuIiwgIjQzMDgiXSwgWzQzLjI0NjUwNDA0ODU5Nzc5LCAtMi45MDkyODc2NjYyNzg1MDcsICJDYW1pbm8gZGVsIFBvbnRcdTAwZjNuIC8gQXZlbmlkYSBNaXJhZmxvcmVzIiwgIjQzMDkiXSwgWzQzLjI0NjgyNjkwMDM5OTI1NiwgLTIuOTExMzMyODc4ODAxOTEwNiwgIkF2ZGEuIE1pcmFmbG9yZXMgLyAoR2Fzb2xpbmRlZ2lhKSIsICI0MzEwIl0sIFs0My4yNDY3ODE5OTI4MzIyMiwgLTIuOTExNzUxOTU2NDIyNzQ4LCAiQXZkYS4gTWlyYWZsb3JlcyAvIEdhc29saW5kZWdpYSIsICI0MzExIl0sIFs0My4yNjA3NDYwNTMzNzYwMjUsIC0yLjkyOTA0NTcwMzIyNDE0NCwgIkF5YWxhICgyKSIsICI2MTI5Il0sIFs0My4yNjE0Nzg4OTAwNjA5ODUsIC0yLjkyNzgyNzg1Njg1MTI4ODgsICJHcmFuIFZcdTAwZWRhIDIiLCAiNjEzMCJdLCBbNDMuMjg2MDI0NTMyNDIxODU1LCAtMi45NTgzNDE0MDA3NDcxMiwgIkVuZWt1cmkgLyBHYXNvbGluZGVnaWEiLCAiMTcwNSJdLCBbNDMuMjg5NTg3MDYwNTg5NTgsIC0yLjk2MDY4MTk0ODIyMzQ3OCwgIkVuZWt1cmkiLCAiMTcwNiJdLCBbNDMuMjg3NTc5OTYxMjkyMjksIC0yLjk1NzUxNjA5MzM5MDY3NCwgIkVuZWt1cmkgLyAoU2FuIFBhYmxvKSIsICIxNzA3Il0sIFs0My4yODMwOTA0MjcyOTY0OSwgLTIuOTUyOTc4MjA0MjU0Nzk2LCAiRWxvcnJpYWdhIiwgIjE3MDgiXSwgWzQzLjI3OTE3NjUzNjQ2NjQxNiwgLTIuOTQ2MDU4ODExMDQ2NzMzNiwgIkJlcnJpeiAvIFRpcm8gWmVsYWlhIiwgIjE3MDkiXSwgWzQzLjI3OTY0ODQzMDU5Mjc4NiwgLTIuOTQxMzI5NDUwODE4ODYzNywgIk9zdGFsYXJpdHphIEVza29sYSIsICIxNzEwIl0sIFs0My4yNzgyMTQwNzg4MjkxNCwgLTIuOTM0ODYyMTAwMzM1NzYzNiwgIkFpeGVycm90YSIsICIxNzExIl0sIFs0My4yNzY5MDc3NzU3MTQxNSwgLTIuOTI2NTE1NjY1NjAwMTM2LCAiQXJ0eGFuZGEgLyBKZXN1cyBNYXJpYSBJa2FzdGV0eGVhIiwgIjI3MDYiXSwgWzQzLjI3NjE2MzgwMjkwMjc5LCAtMi45MjQzOTQ1ODA0MTEwMjgsICJBcnR4YW5kYSAvIE5vZ2FybyIsICIyNzA3Il0sIFs0My4yNzQzNjE5NTk3MDEwMDQsIC0yLjkxOTY1MTY1OTMyMTI4NzMsICJBcnR4YW5kYSAvIEZ1bmlrdWxhcnJhIiwgIjI3MDgiXSwgWzQzLjI3MzU3MTA3OTUwMDExNSwgLTIuOTE3NTAyODYzNjg2NzUxNywgIkFydHhhbmRhIC8gS2lyb2xkZWdpYSIsICIyNzA5Il0sIFs0My4yNzE1MDQxNzE2NjM2NywgLTIuOTEzMTA5NTI4MzgyMTg0NiwgIkFydHhhbmRhIC8gTGEgRXNwZXJhbnphIiwgIjI3MTAiXSwgWzQzLjI2MTAxMjY1MTQ5OTA0NCwgLTIuOTQ4NTQ3NzIwMjAzNDQsICJMdWlzIEJyaVx1MDBmMWFzIDI3IiwgIjgxMjgiXSwgWzQzLjI0ODQ1MDY0MzExMjY3NiwgLTIuOTEyNTY4MzUxMjY4MTI4LCAiUGludG9yIExvc2FkYSAyNiIsICI0MzEyIl0sIFs0My4yNjY5MTQ2NTQzNzU2NiwgLTIuOTIyNzM0ODUyNzQ5MzE2LCAiTWF0aWtvIDI3IiwgIjIyMDciXSwgWzQzLjI0NDIxOTAzNTg5NjIxNSwgLTIuOTE3NDIxMjI3MzUyMDI0NCwgIkNhbWlubyBkZWwgUG9udG9uIC8gSWthc3RvbGEiLCAiNDMwNyJdLCBbNDMuMjQyODgxODcwOTczMTYsIC0yLjkzODE1ODA1OTQyNTA3MDIsICJMYXJyYXNraXR1YmlkZWEgKDgxKSIsICI3NDE4Il0sIFs0My4yNTM1MzczNDg4ODk4MywgLTIuOTI5NDA3NzkxNTc0NDMyLCAiTWluYSBTYW4gTHVpcyIsICI1OTE5Il0sIFs0My4yNTUxNDU2ODgwMjAyODUsIC0yLjk3MTkzNjIyMjkxNTU1MTcsICJab3Jyb3R6YS1LYXN0cmV4YW5hIC8gKFB0ZS4gRGlhYmxvKSIsICI4NjIxIl0sIFs0My4yNjA0NDU4MjY2OTA5NzYsIC0yLjk0NzE3MjYwMjc3Nzg4NDYsICJTYWJpbm8gQXJhbmEgMzIiLCAiODEyOSJdLCBbNDMuMjY1NjczMDk1ODYwMDgsIC0yLjk1NTU0NTQzMjA0Mzk2NDUsICJSaWJlcmEgZGUgRGV1c3R1ICg5KSIsICIxNTE3Il0sIFs0My4yNjc4NjUxMjI3MjkzMiwgLTIuOTUxMzQxODg4NzIxMDg0LCAiR2VuZXJhbCBFcmFzbyAvIENsaW5pY2EgSU1RIiwgIjE1MTgiXSwgWzQzLjI2NTg3Mjg0ODMzMzg5LCAtMi45NTQ2OTQwMjE5MDg1NTYsICJSaWJlcmEgZGUgRGV1c3R1IDgiLCAiMTUxNiJdLCBbNDMuMjUyMDE5NDU4MDg3Mzk2LCAtMi45Mzg3MjU5MDk5MDY1NTIsICJFc2t1cnR6ZSAoMTApIiwgIjcyMTEiXSwgWzQzLjI2NDE0Njk0MTQ0MDA3NSwgLTIuOTA4OTI2OTUzMjg1NzEyNywgIkF0eGV0YWJpZGVhIC8gSmVzdWl0aW5hcyIsICIyNzEzIl0sIFs0My4yNjU3NTA3OTc3NTU1MywgLTIuOTYwMDE3NDU0MTc0NDEzOCwgIlNpcmd1ZXJhcyAzIiwgIjgyMTMiXSwgWzQzLjI1MjAwNTI4MTQ0Mzc4LCAtMi45MjI3OTQ5NTQxNjQzNTc0LCAiVXJhenVycnV0aWEgMjkiLCAiNTYwNSJdLCBbNDMuMjczNTIxMzc2MzEyNzIsIC0yLjk1NDAzMzEzMDg3NDY4MzQsICJJYmFycmVrb2xhbmRhIDE3IiwgIjE0MzAiXSwgWzQzLjI3MzQyNjQ3ODEzNzAwNCwgLTIuOTUzNDUyMTc5MjE2OTkxLCAiSWJhcnJla29sYW5kYSAvIFBhcmtpbmciLCAiMTQzMSJdLCBbNDMuMjc1MzgzMTE2MjY1NjMsIC0yLjk1MzY0MzMxODAwOTYwMzYsICJNb250ZSBFbG9ycmlhZ2EiLCAiMTcxMiJdLCBbNDMuMjc1Njg3MTg2OTA4NiwgLTIuOTcxOTAwMDE3MzYyNzM3NywgIlpvcnJvdHphLUthc3RyZXhhbmEgMTAiLCAiODUxMiJdLCBbNDMuMjU0MDMyNzc5Nzc3MzA1LCAtMi45NDI1Nzg3ODM2NTcxNzE3LCAiQXZkYS4gRmVycm9jYXJyaWwiLCAiNzMyNCJdLCBbNDMuMjY5MTkxOTIzNzg1MTUsIC0yLjkwODc4MDk3ODc1ODE4MTMsICJBcnR4YW5kYSAvIEJlZ2lyYXRva2lhIiwgIjI3MTEiXSwgWzQzLjI3MTAxMTcwOTE1MTI5NiwgLTIuOTQ2MTU4OTc0ODMxODM2LCAiTWFkYXJpYWdhIDEzIiwgIjE0MzIiXSwgWzQzLjI2ODE4NDgwMjI0MTI4LCAtMi45NTQwMTAxMDAwNjgzMDksICJKdWxpbyBVcnF1aWpvIiwgIjE1MTkiXSwgWzQzLjI2MDEwMTE1Njg3ODE4LCAtMi45NTI5NzE0OTM3NTUyMDk0LCAiSG9zcGl0YWwgQmFzdXJ0byIsICI4MTM0Il0sIFs0My4yNjQ5MjYxNjUzNDEzMzYsIC0yLjk0NDA1OTk3MDk0MjI5MDgsICJHcmFuIFZcdTAwZWRhIDg1IiwgIjYyMzEiXSwgWzQzLjI3MDE4MTI3OTgwNTg4LCAtMi45MzcyNzQwNjUyNzEwMDQ1LCAiVW5pdmVyc2lkYWQgRGV1c3RvIiwgIjE0MzQiXSwgWzQzLjI3MDIyNDM0MDA3NjA1NSwgLTIuOTM3NjA0OTA0MDk3NzkyLCAiVW5pdmVyc2lkYWQgRGV1c3RvIiwgIjE0MzUiXV07CiAgICAgICAgICAgICAgICB2YXIgY2x1c3RlciA9IEwubWFya2VyQ2x1c3Rlckdyb3VwKHsiZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb20iOiAxNH0pOwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBkYXRhW2ldOwogICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXIgPSBjYWxsYmFjayhyb3cpOwogICAgICAgICAgICAgICAgICAgIG1hcmtlci5hZGRUbyhjbHVzdGVyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjbHVzdGVyLmFkZFRvKG1hcF9mOWY3ZjdhNjcxNWM0ZGE4OWI3YjQyMzA3YTE1MWUyNCk7CiAgICAgICAgICAgICAgICByZXR1cm4gY2x1c3RlcjsKICAgICAgICAgICAgfSkoKTsKICAgICAgICAKICAgIAogICAgICAgICAgICBtYXBfZjlmN2Y3YTY3MTVjNGRhODliN2I0MjMwN2ExNTFlMjQuZml0Qm91bmRzKAogICAgICAgICAgICAgICAgW1s0My4yMjYzNzA5ODgyNTQ1MSwgLTIuOTc0OTQ5Njk0MjU0NzI1M10sIFs0My4yODk1ODcwNjA1ODk1OCwgLTIuODk2NTA2MTE2NjkzNzQ0XV0sCiAgICAgICAgICAgICAgICB7InBhZGRpbmciOiBbMSwgMV19CiAgICAgICAgICAgICk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x1c626366108>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.map_stops(feed.stops.stop_id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "feed = feed.create_shapes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2YiB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiID0gTC5tYXAoCiAgICAgICAgICAgICAgICAibWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IFswLCAwXSwKICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3LAogICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgcHJlZmVyQ2FudmFzOiBmYWxzZSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIAoKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8xOTRlOTAxMDI2NWE0NTcwYmI1MDI2MjM2OWI0MzI4MCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgImh0dHBzOi8vY2FydG9kYi1iYXNlbWFwcy17c30uZ2xvYmFsLnNzbC5mYXN0bHkubmV0L2xpZ2h0X2FsbC97en0ve3h9L3t5fS5wbmciLAogICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGlvbiI6ICJcdTAwMjZjb3B5OyBcdTAwM2NhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiXHUwMDNlT3BlblN0cmVldE1hcFx1MDAzYy9hXHUwMDNlIGNvbnRyaWJ1dG9ycyBcdTAwMjZjb3B5OyBcdTAwM2NhIGhyZWY9XCJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zXCJcdTAwM2VDYXJ0b0RCXHUwMDNjL2FcdTAwM2UsIENhcnRvREIgXHUwMDNjYSBocmVmID1cImh0dHA6Ly9jYXJ0b2RiLmNvbS9hdHRyaWJ1dGlvbnNcIlx1MDAzZWF0dHJpYnV0aW9uc1x1MDAzYy9hXHUwMDNlIiwgImRldGVjdFJldGluYSI6IGZhbHNlLCAibWF4TmF0aXZlWm9vbSI6IDE4LCAibWF4Wm9vbSI6IDE4LCAibWluWm9vbSI6IDAsICJub1dyYXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLCAic3ViZG9tYWlucyI6ICJhYmMiLCAidG1zIjogZmFsc2V9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9mMWQzMGUxMGM0YTE0MDFmYjllNGQ0Y2M3ZmVlNGJlZSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfYzAwNDQxM2FlNGQ5NDFhNGJjZWQyYzY3MjM5MDM5MmQgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNzU0MTI0NDMwODcwOSwgLTIuOTQ3NDIwODU3NjQ2NjgyN10sIFs0My4yNzUzOTg1MTAwMDYyNTUsIC0yLjk0OTYxNzYxMjM3NDgyMl0sIFs0My4yNzY4NzcxNDE5MTc4ODYsIC0yLjk1MzIxNzE5MTgzODI0MDRdLCBbNDMuMjc2NTQ0Nzk5MjcxOTcsIC0yLjk1Mzg0NDExODA2ODUyOV0sIFs0My4yNzM4NDA5NDE2MzA4MiwgLTIuOTU1NDEyNzA3NTExMTU2M10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTNdLCBbNDMuMjY3ODExOTU3ODQ2NzIsIC0yLjkzOTcyOTQ5OTI4OTcwM10sIFs0My4yNjU0Nzc0Njg1MDE4NjQsIC0yLjkzNjgwMDAwOTk1NTQ4NDNdLCBbNDMuMjYyODgzMjk0MTk3OTcsIC0yLjkzNTYzNzUxNzMwMDk2OV0sIFs0My4yNjI2OTA3NjE5NzcwMywgLTIuOTMzNzUwOTk2NDMxNTU5XSwgWzQzLjI2MTUyOTk0NjQwMDE3NCwgLTIuOTI4NDc2NTgwODg0NjUxM10sIFs0My4yNjE0Nzg4OTAwNjA5ODUsIC0yLjkyNzgyNzg1Njg1MTI4ODhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjNjZjMmE1IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjNjZjMmE1IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjFkMzBlMTBjNGExNDAxZmI5ZTRkNGNjN2ZlZTRiZWUpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2JhN2M4NmY5YmMzYjQ5ZjZiZGUyYmM3N2UxMWZlZjM4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xZWIxNmEzYzIyZjQ0NjliODJkNDBiYzcxMjFiNGU2ZSA9ICQoYDxkaXYgaWQ9Imh0bWxfMWViMTZhM2MyMmY0NDY5YjgyZDQwYmM3MTIxYjRlNmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTg5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwOTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gUGxhemEgQmlyaWJpbGE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0NjY4PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2JhN2M4NmY5YmMzYjQ5ZjZiZGUyYmM3N2UxMWZlZjM4LnNldENvbnRlbnQoaHRtbF8xZWIxNmEzYzIyZjQ0NjliODJkNDBiYzcxMjFiNGU2ZSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9jMDA0NDEzYWU0ZDk0MWE0YmNlZDJjNjcyMzkwMzkyZC5iaW5kUG9wdXAocG9wdXBfYmE3Yzg2ZjliYzNiNDlmNmJkZTJiYzc3ZTExZmVmMzgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzA4OGExZjU0MTdlODQyZGZhMDQ2NzAwMWZkNDFlYjk1ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9jOGNlNmVmODBlYWM0ZGI0YWY1MGFkYzFmNzgxNWZhMSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTQ3ODg5MDA2MDk4NSwgLTIuOTI3ODI3ODU2ODUxMjg4OF0sIFs0My4yNjI3MDk4NjczOTA5NywgLTIuOTMzNDU3MjM4NzAyMTU3NF0sIFs0My4yNjM5MzA5OTA4NzgzMzYsIC0yLjkzNTU1NjkzNjU1NTUxM10sIFs0My4yNjU4NjQ3MzYxNzM4MywgLTIuOTM2OTgyMjA4NDY4MzIxN10sIFs0My4yNjc1NzYzMjE1NjgxODUsIC0yLjkzOTM3MDA1NjYyMDQ1Nl0sIFs0My4yNzEwMjYwMjQyMTUwMDQsIC0yLjk0MTIzOTg3ODY2NjQ0NV0sIFs0My4yNzE5NDc4MDYwNzU0NywgLTIuOTQ1MDg1Mzk1NzcyMjU0N10sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNV0sIFs0My4yNzM2NTIyNDAwMDE3MjQsIC0yLjk1NDQyNzg1MTkyNzc1NDVdLCBbNDMuMjc1MzgzMTE2MjY1NjMsIC0yLjk1MzY0MzMxODAwOTYwMzZdLCBbNDMuMjc1NDQ4MDYyNzQ5MjQsIC0yLjk1MjM5NTU3MjUyMjQ3NjZdLCBbNDMuMjc0MTQwNDIwNzkzNTcsIC0yLjk0OTc0MTM5MTg3MzAzXSwgWzQzLjI3NDA5ODk4NTExNTY1LCAtMi45NDg0NTk0MTkyMDE0NDE3XSwgWzQzLjI3NDQ3NDU2NzE5MzYxNCwgLTIuOTQ3MTk5NTYwNzY5ODgzOF0sIFs0My4yNzU0MTI0NDMwODcwOSwgLTIuOTQ3NDIwODU3NjQ2NjgyN11dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmYzhkNjIiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmYzhkNjIiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wODhhMWY1NDE3ZTg0MmRmYTA0NjcwMDFmZDQxZWI5NSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZDEwZWZiZTVkYWVhNDkzYzliNTU0MTlmMjk3ZDdmZTEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzdjZmRlNDE4NWI0MzQwMWE4MzA4MDgyMmI4MmVkZTQxID0gJChgPGRpdiBpZD0iaHRtbF83Y2ZkZTQxODViNDM0MDFhODMwODA4MjJiODJlZGU0MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTA8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDk1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBQbGF6YSBCaXJpYmlsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTQ3ODA8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDEwZWZiZTVkYWVhNDkzYzliNTU0MTlmMjk3ZDdmZTEuc2V0Q29udGVudChodG1sXzdjZmRlNDE4NWI0MzQwMWE4MzA4MDgyMmI4MmVkZTQxKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2M4Y2U2ZWY4MGVhYzRkYjRhZjUwYWRjMWY3ODE1ZmExLmJpbmRQb3B1cChwb3B1cF9kMTBlZmJlNWRhZWE0OTNjOWI1NTQxOWYyOTdkN2ZlMSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNzM3OGMxZjdiZDFjNDcwZjllMzk5YzZiMjE1ZTBjOWEgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzkzNzBlOGJmNjc4NDQ3MjA4ZGRiZDE3NzQwYjMxNGM4ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjYxNDQ4MTY4MjA1NzksIC0yLjkyNzE5MDE3NDYzNDg2ODddLCBbNDMuMjY0MDk5NTEzNTAwMDIsIC0yLjkyMjU5MDExMjA3MjU4NzddLCBbNDMuMjY0NzUwMzczNTQ3MDQ1LCAtMi45MTg0MTM4ODAwMzU5OTg0XSwgWzQzLjI2MDc4NTE3ODMyNTU1LCAtMi45MTQ4MDQ0NTQxOTYwMTgzXSwgWzQzLjI1ODk4MTU3MTM1NjcwNiwgLTIuOTEzODY3MDU3NDIzNzQzN10sIFs0My4yNTc4MzA4MzMzNDQ4NSwgLTIuOTA5NzAyMjI5ODEzNzU0XSwgWzQzLjI2MDMyOTE0NDY3ODQ2NSwgLTIuOTA0NzQ3MTQyMzEyNzMyXSwgWzQzLjI1ODQ0MDgwNTQ5MjA2NCwgLTIuOTAyNzIyODkyNDc1MTc3XSwgWzQzLjI1OTY5NTc4MTEzMjM2NSwgLTIuOTAwNDcxNzA5MjEyMjQ0NV0sIFs0My4yNjEzMzYwNzQwMDY5OCwgLTIuODk5NTc4Njg4OTM2MzIxM10sIFs0My4yNjA4MTQ4MDkwMDg3NCwgLTIuODk2NjU4ODQyMDIzMjczN11dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM4ZGEwY2IiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM4ZGEwY2IiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83Mzc4YzFmN2JkMWM0NzBmOWUzOTljNmIyMTVlMGM5YSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZmM5YWIwMTk2ZTg1NDNiZWI2OWQ3MWRjN2U4NmIxYTIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzAzNmExNDk2ZDFjMTQ4YzE5OWNhZWY2OTlmNDNiYzQ4ID0gJChgPGRpdiBpZD0iaHRtbF8wMzZhMTQ5NmQxYzE0OGMxOTljYWVmNjk5ZjQzYmM0OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTE8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDg3PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBPdHhhcmtvYWdhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwOTAxODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mYzlhYjAxOTZlODU0M2JlYjY5ZDcxZGM3ZTg2YjFhMi5zZXRDb250ZW50KGh0bWxfMDM2YTE0OTZkMWMxNDhjMTk5Y2FlZjY5OWY0M2JjNDgpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfOTM3MGU4YmY2Nzg0NDcyMDhkZGJkMTc3NDBiMzE0YzguYmluZFBvcHVwKHBvcHVwX2ZjOWFiMDE5NmU4NTQzYmViNjlkNzFkYzdlODZiMWEyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF80NzQwZThiMmI4NDI0NjA3OWZjN2ExNzc1YzM4NjBhZSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNWQ0ZmE3Njc5N2ZhNDBiOThkODJjN2RkNGRlZGY0NWIgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjA4MTQ4MDkwMDg3NCwgLTIuODk2NjU4ODQyMDIzMjczN10sIFs0My4yNjA4NDk2NDUxMjYxOSwgLTIuODk4ODI3MjM0NTIzMDQ1XSwgWzQzLjI1OTQwMjg3NjU4NzE3NCwgLTIuOTAwMzAxMzI2OTk2NDE1NV0sIFs0My4yNTg2NzY0NzgzODEzOTYsIC0yLjkwMjcyMDQ2OTkyMDg0ODRdLCBbNDMuMjYwMzkzNjA5NTAwMTEsIC0yLjkwNDY1OTU3MTE4NTcxNF0sIFs0My4yNTg5MDQ5Nzc2ODYxMywgLTIuOTA5MDQxNTI3MDgyMjc2XSwgWzQzLjI1Njg1NDkxMTk4MjI4LCAtMi45MTE2NTk1MTY0NDQ5NDEzXSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2MDMxNTU0NzMwNzYxLCAtMi45MTQwNDQ0NDYwMzY0NTVdLCBbNDMuMjY0OTAwMjczODQ1NDYsIC0yLjkxODMzNTczMjIwMDI2MDhdLCBbNDMuMjY0OTgyMjYxMjg4NzUsIC0yLjkyMjQ3NjQ3MDc1MDI1OTddLCBbNDMuMjYyODQ1MTIxMTIyMTA1LCAtMi45MjMwNTkxNDMzOTk4NjE2XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYxNDQ4MTY4MjA1NzksIC0yLjkyNzE5MDE3NDYzNDg2ODddXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTc4YWMzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTc4YWMzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNDc0MGU4YjJiODQyNDYwNzlmYzdhMTc3NWMzODYwYWUpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2YwNzMyODliZTM3NzQ2YTM5OTA0ZTBmMmExOWIxZWMxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yZjU2ZDJmZjIwYTE0ZmZiYmQzZmQ3MDY1YjE0NTM4MyA9ICQoYDxkaXYgaWQ9Imh0bWxfMmY1NmQyZmYyMGExNGZmYmJkM2ZkNzA2NWIxNDUzODMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTkyPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAyMDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gT3R4YXJrb2FnYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MDkyODU8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZjA3MzI4OWJlMzc3NDZhMzk5MDRlMGYyYTE5YjFlYzEuc2V0Q29udGVudChodG1sXzJmNTZkMmZmMjBhMTRmZmJiZDNmZDcwNjViMTQ1MzgzKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzVkNGZhNzY3OTdmYTQwYjk4ZDgyYzdkZDRkZWRmNDViLmJpbmRQb3B1cChwb3B1cF9mMDczMjg5YmUzNzc0NmEzOTkwNGUwZjJhMTliMWVjMSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNGVmZDQwNTBmNTA0NDJhODk0NWEyNTNmYzViOWVmNGEgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2QyMzBjMzAxYWU1YjQzOGJhODc4NjFjNGEyODJhOGNiID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjg0MDU2MTY2NDE3NTcsIC0yLjk2NTQ0MzE0MTQ0ODg1Nl0sIFs0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODVdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1N10sIFs0My4yNzU4NzIxMjM4MzEwMiwgLTIuOTU5NzY0OTM3ODI4NjEzN10sIFs0My4yNzM3NjkyMjM3MjM0MzQsIC0yLjk1NzU0ODE4OTAzMzQ1NzRdLCBbNDMuMjcyNzEwNDIyMzU5NjUsIC0yLjk1NTQzNTEyMjQzMjUzM10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTNdLCBbNDMuMjY3ODExOTU3ODQ2NzIsIC0yLjkzOTcyOTQ5OTI4OTcwM10sIFs0My4yNjU0Nzc0Njg1MDE4NjQsIC0yLjkzNjgwMDAwOTk1NTQ4NDNdLCBbNDMuMjYyODgzMjk0MTk3OTcsIC0yLjkzNTYzNzUxNzMwMDk2OV0sIFs0My4yNjI2OTA3NjE5NzcwMywgLTIuOTMzNzUwOTk2NDMxNTU5XSwgWzQzLjI2MTUyOTk0NjQwMDE3NCwgLTIuOTI4NDc2NTgwODg0NjUxM10sIFs0My4yNjE0Nzg4OTAwNjA5ODUsIC0yLjkyNzgyNzg1Njg1MTI4ODhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYTZkODU0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYTZkODU0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNGVmZDQwNTBmNTA0NDJhODk0NWEyNTNmYzViOWVmNGEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzNhZTM4MmQ2ZjUyYTRiNTI5ZmQzOWU5OWJiNDU1YzkwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lZTNjMTNlNzU4MGE0MDQ0OGVjMzFmZWIyMjI0MjE2OSA9ICQoYDxkaXYgaWQ9Imh0bWxfZWUzYzEzZTc1ODBhNDA0NDhlYzMxZmViMjIyNDIxNjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTkzPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwMzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gUGxhemEgQmlyaWJpbGE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDEzMjQyPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzNhZTM4MmQ2ZjUyYTRiNTI5ZmQzOWU5OWJiNDU1YzkwLnNldENvbnRlbnQoaHRtbF9lZTNjMTNlNzU4MGE0MDQ0OGVjMzFmZWIyMjI0MjE2OSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9kMjMwYzMwMWFlNWI0MzhiYTg3ODYxYzRhMjgyYThjYi5iaW5kUG9wdXAocG9wdXBfM2FlMzgyZDZmNTJhNGI1MjlmZDM5ZTk5YmI0NTVjOTApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzcwOGIxOWFjYmViZTQ0MTdiNmUwYWRjYzdlYTBlZmE3ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9hZTIzYTNlNGYzMmY0MDljOTIzZWI3MjBhYzRlOWIxYyA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTQ3ODg5MDA2MDk4NSwgLTIuOTI3ODI3ODU2ODUxMjg4OF0sIFs0My4yNjI3MDk4NjczOTA5NywgLTIuOTMzNDU3MjM4NzAyMTU3NF0sIFs0My4yNjM5MzA5OTA4NzgzMzYsIC0yLjkzNTU1NjkzNjU1NTUxM10sIFs0My4yNjU4NjQ3MzYxNzM4MywgLTIuOTM2OTgyMjA4NDY4MzIxN10sIFs0My4yNjc1NzYzMjE1NjgxODUsIC0yLjkzOTM3MDA1NjYyMDQ1Nl0sIFs0My4yNzEwMjYwMjQyMTUwMDQsIC0yLjk0MTIzOTg3ODY2NjQ0NV0sIFs0My4yNzE5NDc4MDYwNzU0NywgLTIuOTQ1MDg1Mzk1NzcyMjU0N10sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNV0sIFs0My4yNzMzMDQ5MjgwMjI2LCAtMi45NTUzMzQ4MzE1MTMxOTEzXSwgWzQzLjI3NDcxOTYxNDAzNjU2LCAtMi45NTg1ODk1NzE0NTIyMTEyXSwgWzQzLjI3Njc3NjAxNTM1MjA1NiwgLTIuOTYwMDU2MTA1MTAyMzUzN10sIFs0My4yNzg4MzMzNTIwOTQ4NCwgLTIuOTYxMTk0NDA4MDM5ODQzNl0sIFs0My4yODE3MDUzMDI5NDA3MTUsIC0yLjk2MjgxMjg1MzU0Nzg5N10sIFs0My4yODM3OTczMzU3NzYzNTYsIC0yLjk2MjU5NjExNDU0Nzk3MDddLCBbNDMuMjg0MDU2MTY2NDE3NTcsIC0yLjk2NTQ0MzE0MTQ0ODg1Nl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmZmQ5MmYiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmZmQ5MmYiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83MDhiMTlhY2JlYmU0NDE3YjZlMGFkY2M3ZWEwZWZhNyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNGEyM2RjZmJlYzAzNDAwMDk5OTVhYWIyZmY4MjM3MDEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzIxMGY2NmZmNWM0MTRmYjZiZTM4NmJlY2Q2MmUyYTcwID0gJChgPGRpdiBpZD0iaHRtbF8yMTBmNjZmZjVjNDE0ZmI2YmUzODZiZWNkNjJlMmE3MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDk0PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBQbGF6YSBCaXJpYmlsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTMzODg8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNGEyM2RjZmJlYzAzNDAwMDk5OTVhYWIyZmY4MjM3MDEuc2V0Q29udGVudChodG1sXzIxMGY2NmZmNWM0MTRmYjZiZTM4NmJlY2Q2MmUyYTcwKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2FlMjNhM2U0ZjMyZjQwOWM5MjNlYjcyMGFjNGU5YjFjLmJpbmRQb3B1cChwb3B1cF80YTIzZGNmYmVjMDM0MDAwOTk5NWFhYjJmZjgyMzcwMSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNjMyOGZiOTRlMjE5NGMyN2I3ZDQyMzk0NTJjZjA3MDggPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzNlZDc2ZTJkNGY2OTQ4NThiOGZiZjQyMjViNzc4NGVjID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjcwNjUwNzM2NDgyMjMsIC0yLjk1NjUyNDQ5MDkzMzY3MDVdLCBbNDMuMjcwNjkzOTg2MzUyNzUsIC0yLjk1NDkxNjUzODcyMDA4NzVdLCBbNDMuMjcxMjkxNDA0OTYxOTMsIC0yLjk1MjYwNTE2MzY1NjkxNl0sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcwNjExODQ4NDM0MjUsIC0yLjk0NzM5MDc1MTY2OTIyMTVdLCBbNDMuMjY4NzA4Mjc3MDk4NjUsIC0yLjk0NzIzOTI0NDU4MTg5MDVdLCBbNDMuMjY5MTY2NDc1Mjk0Mjg0LCAtMi45NDM2MTc1ODc0MDcwNTZdLCBbNDMuMjY5NzYxMTg0NzcwMjgsIC0yLjk0MDcxOTkwMDUwNTQzNl0sIFs0My4yNzAxODEyNzk4MDU4OCwgLTIuOTM3Mjc0MDY1MjcxMDA0NV0sIFs0My4yNjk2ODAxMTIwNjY3OTQsIC0yLjkzMTM4MzA2MjgyNTQyNjVdLCBbNDMuMjY2NDM0OTAzODkxMzUsIC0yLjkyNjgyODE1MDA3NTM3M10sIFs0My4yNjQ0OTIxMzE2MDA2MSwgLTIuOTI0NTA2MDc1ODM0MzAzM10sIFs0My4yNjI4NDUxMjExMjIxMDUsIC0yLjkyMzA1OTE0MzM5OTg2MTZdLCBbNDMuMjYwNDExNTY5MTE0ODQ0LCAtMi45MjI5MzYxOTIyNTc1NDA1XSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU0NzczMDc3NzUxNTIsIC0yLjkyNjc0Mzg5NDM0MzA3NDRdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTVjNDk0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTVjNDk0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNjMyOGZiOTRlMjE5NGMyN2I3ZDQyMzk0NTJjZjA3MDgpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzAyNDZkZTI4N2Q1MDQ4YTQ4ZDYzMjk4NzVjZjBlNjliID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yZjFiNjlhZTIzYmM0ZjVlODA0YTQxY2E5NGIyY2FmNSA9ICQoYDxkaXYgaWQ9Imh0bWxfMmYxYjY5YWUyM2JjNGY1ZTgwNGE0MWNhOTRiMmNhZjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTk1PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwNTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQyNDk4NjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wMjQ2ZGUyODdkNTA0OGE0OGQ2MzI5ODc1Y2YwZTY5Yi5zZXRDb250ZW50KGh0bWxfMmYxYjY5YWUyM2JjNGY1ZTgwNGE0MWNhOTRiMmNhZjUpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfM2VkNzZlMmQ0ZjY5NDg1OGI4ZmJmNDIyNWI3Nzg0ZWMuYmluZFBvcHVwKHBvcHVwXzAyNDZkZTI4N2Q1MDQ4YTQ4ZDYzMjk4NzVjZjBlNjliKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF80N2QzNmNlYmYxODA0YTAxOWM5YzI1OGFkOWZjZjg2NSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNDRlYjIxNGZkNGNjNDhkMDlkNDQzOGZhOTQ1OGJhNGIgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjYwNDIwNjk3NjQ2MTU0LCAtMi45MjI3NTUzODI5MDc4NDU0XSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NjgzMDEyNjg3MjE4NiwgLTIuOTI3MjM2MDkzMTA1NjE4NV0sIFs0My4yNjkyMjY0MTE4MTI2NDYsIC0yLjkzMDMzNjUxNTYzMjcwOF0sIFs0My4yNzAyMjQzNDAwNzYwNTUsIC0yLjkzNzYwNDkwNDA5Nzc5Ml0sIFs0My4yNjk5ODIyMTU5NjMwMSwgLTIuOTQwMzI1NTExNDY2OTY3NV0sIFs0My4yNjkyNjQ5NDAxMjQzNiwgLTIuOTQzNjY1ODg4ODIyNzg0XSwgWzQzLjI3MDA3NDc3MjgzMzUxLCAtMi45NDY5NzEyNTgyMTE4MzMzXSwgWzQzLjI2OTgyNTU4ODEyNjEsIC0yLjk1MTgxNDE3MTg3NjM1MzNdLCBbNDMuMjcwNzg0MTI0NTE3MTg1LCAtMi45NTQ1MDUwNDM4MzE3NjM3XSwgWzQzLjI3MDcxNDEwMTI2MjM3LCAtMi45NTY4NDM4OTE5MDk4NjE2XSwgWzQzLjI3MDY1MDczNjQ4MjIzLCAtMi45NTY1MjQ0OTA5MzM2NzA1XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2IzYjNiMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2IzYjNiMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzQ3ZDM2Y2ViZjE4MDRhMDE5YzljMjU4YWQ5ZmNmODY1KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83YzhhMTA1NTE1N2U0NGQ2OGMwODFmNDhmZTE5NTE1ZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNjlkMDQzNWMzZGJhNGYzNmI4NGUwMmM4M2U2YzBkODQgPSAkKGA8ZGl2IGlkPSJodG1sXzY5ZDA0MzVjM2RiYTRmMzZiODRlMDJjODNlNmMwZDg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjE5NjwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMzg8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEF0eHVyaTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MjUwNTE8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfN2M4YTEwNTUxNTdlNDRkNjhjMDgxZjQ4ZmUxOTUxNWYuc2V0Q29udGVudChodG1sXzY5ZDA0MzVjM2RiYTRmMzZiODRlMDJjODNlNmMwZDg0KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzQ0ZWIyMTRmZDRjYzQ4ZDA5ZDQ0MzhmYTk0NThiYTRiLmJpbmRQb3B1cChwb3B1cF83YzhhMTA1NTE1N2U0NGQ2OGMwODFmNDhmZTE5NTE1ZikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfMWQ5YzRlNTdiNTdiNDgyMGFkM2NhZDkyNTZlYjM3Y2UgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2M2NTFiZjkyNmE0YTRhYTRiYTk1MGU5MTIwNDk1ZWM1ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjgxNzMxNzI5NjIzMDU0LCAtMi45NjMwMjUxMjQwNTIxMTA0XSwgWzQzLjI3OTQwNDkxNjI1NjQ1LCAtMi45NjE3Mzc5MTk4NDE2Mjg1XSwgWzQzLjI3NzcwOTIyNjAwODM1LCAtMi45NjA3OTI2NDU5MDEyNTddLCBbNDMuMjc1ODcyMTIzODMxMDIsIC0yLjk1OTc2NDkzNzgyODYxMzddLCBbNDMuMjczNzY5MjIzNzIzNDM0LCAtMi45NTc1NDgxODkwMzM0NTc0XSwgWzQzLjI3MjcxMDQyMjM1OTY1LCAtMi45NTU0MzUxMjI0MzI1MzNdLCBbNDMuMjcxOTI1NDk4MDA5MDI2LCAtMi45NTAwOTYzNDYxMDAzOTk3XSwgWzQzLjI3MTcxNjU0NzA4NzcwNiwgLTIuOTQ0OTM1OTI0Njc2MzM2XSwgWzQzLjI3MDk0NjY4NTY5NTk3NSwgLTIuOTQxNTQyODk4ODQ2NjUzXSwgWzQzLjI2NzgxMTk1Nzg0NjcyLCAtMi45Mzk3Mjk0OTkyODk3MDNdLCBbNDMuMjY1NDc3NDY4NTAxODY0LCAtMi45MzY4MDAwMDk5NTU0ODQzXSwgWzQzLjI2Mjg4MzI5NDE5Nzk3LCAtMi45MzU2Mzc1MTczMDA5NjldLCBbNDMuMjYzNjI5NjMxODM5MDMsIC0yLjkzNDU4Njg5MDE2MTIzOV0sIFs0My4yNjY2OTEyOTkxMDU2MiwgLTIuOTMzMzM5OTczOTMwMTY4N10sIFs0My4yNjk2Njg2MTMzODM3MywgLTIuOTIyNDc5MjE0NDc4Mzc2NF0sIFs0My4yNjc2NDE0MTAyNDcwNiwgLTIuOTE4NDI2NjI0NzUxOTkyXSwgWzQzLjI2NTUzMDgyMTgxNzY1NiwgLTIuOTE2ODc4MDY3MzIwNjI4XSwgWzQzLjI2MDc4NTE3ODMyNTU1LCAtMi45MTQ4MDQ0NTQxOTYwMTgzXSwgWzQzLjI1Njg2MTMzODY2NDA0NSwgLTIuOTExOTkyOTM3NjY1OTQwNl0sIFs0My4yNTU2NTQ5NzI3NjkzLCAtMi45MTA4MjYzMjY2NTc5MDM1XSwgWzQzLjI0OTU1NjIyNTk1MDgxLCAtMi45MDg0MDE2MDAwMTYwNzhdLCBbNDMuMjUwMzg1NDMyMzA2OTU2LCAtMi45MTA2NjA1MDYyMDEzNzMzXSwgWzQzLjI0ODgzMzQ4MDg2ODg0NiwgLTIuOTA5MzQ3MDIzODU1NDMzNV0sIFs0My4yNDk4OTYwNzUwNTQzMiwgLTIuOTA4NjAzNTExMTkzOTIxXSwgWzQzLjI0ODY3MTEzODk1ODU4NSwgLTIuOTA2OTI3ODc1MjMwMDQ0XSwgWzQzLjI1MDcyMjgyNDczOTYsIC0yLjkwMzMyODY5NzQ4Njc4MjddLCBbNDMuMjUyNTYxOTM5Mjc3NjksIC0yLjkwMjMzNzA2MzEwODE5NTNdLCBbNDMuMjU1MDQ1MTY2ODQzMDU0LCAtMi45MDA5ODc5ODYzMjkyMzIzXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFkOWM0ZTU3YjU3YjQ4MjBhZDNjYWQ5MjU2ZWIzN2NlKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83NDI2MmM3YzFjMGI0ZTI5OGFiNGVlMTU2ZjllNDZlMCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNWNhNzE3MDhmMGNlNGY2MzgxM2FhOTUxMzYxYjAxODggPSAkKGA8ZGl2IGlkPSJodG1sXzVjYTcxNzA4ZjBjZTRmNjM4MTNhYTk1MTM2MWIwMTg4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjE5NzwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMDE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFR4dXJkaW5hZ2E8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA4MzI4PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzc0MjYyYzdjMWMwYjRlMjk4YWI0ZWUxNTZmOWU0NmUwLnNldENvbnRlbnQoaHRtbF81Y2E3MTcwOGYwY2U0ZjYzODEzYWE5NTEzNjFiMDE4OCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9jNjUxYmY5MjZhNGE0YWE0YmE5NTBlOTEyMDQ5NWVjNS5iaW5kUG9wdXAocG9wdXBfNzQyNjJjN2MxYzBiNGUyOThhYjRlZTE1NmY5ZTQ2ZTApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2FiZDY1M2U1OTVmNjQzNWU5MmY1NTBlZGY2NThjNWYzID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9kZjZlMDdhNjU4NWQ0ZTU4OGIwZGRlMzVlNGQ4MDg0YiA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI1NTA0NTE2Njg0MzA1NCwgLTIuOTAwOTg3OTg2MzI5MjMyM10sIFs0My4yNTYzMDMyMjI0NzYwNCwgLTIuOTAzODI3NTE5NTg3MzI5M10sIFs0My4yNTcwMzU1NTM1ODA1OCwgLTIuOTA2ODUyODQ1NDA1NzMxNF0sIFs0My4yNTc5NzUzNjQ3MzM0NTQsIC0yLjkxMDk1MTA4NDA1MjQ0OTNdLCBbNDMuMjYwNjU4MTQyOTQ3NTksIC0yLjkxMjU5NDY0MzM4ODA4OF0sIFs0My4yNjE1MzEwMDIwNjU0MSwgLTIuOTE1Mjc0MjY3NTQ0NDQ2N10sIFs0My4yNjU1MTM2NDMxMDg0NiwgLTIuOTE2NjgzMTA5MDc4MTY4XSwgWzQzLjI2NzgzMDM3MDM4OTU3NSwgLTIuOTE4NDM0ODUwMTgxOTkxNF0sIFs0My4yNjk4MzEzNzE0ODQ5MjYsIC0yLjkyMjU3Mjg0NTUxNzUwNzddLCBbNDMuMjcwMDgzODk0NzkwMjA0LCAtMi45MjYwMDM1NjIxMjI4NzMzXSwgWzQzLjI2NjA4NDkwNzYxNTkyLCAtMi45MzM3MDU4MzQ2MDc2NjYzXSwgWzQzLjI2MzkzMDk5MDg3ODMzNiwgLTIuOTM1NTU2OTM2NTU1NTEzXSwgWzQzLjI2NTg2NDczNjE3MzgzLCAtMi45MzY5ODIyMDg0NjgzMjE3XSwgWzQzLjI2NzU3NjMyMTU2ODE4NSwgLTIuOTM5MzcwMDU2NjIwNDU2XSwgWzQzLjI3MTAyNjAyNDIxNTAwNCwgLTIuOTQxMjM5ODc4NjY2NDQ1XSwgWzQzLjI3MTk0NzgwNjA3NTQ3LCAtMi45NDUwODUzOTU3NzIyNTQ3XSwgWzQzLjI3MjEyMTU3NTQ3OTQ5LCAtMi45NTA1OTQyMDg3MzYyOTE1XSwgWzQzLjI3MzMwNDkyODAyMjYsIC0yLjk1NTMzNDgzMTUxMzE5MTNdLCBbNDMuMjc0NzE5NjE0MDM2NTYsIC0yLjk1ODU4OTU3MTQ1MjIxMTJdLCBbNDMuMjc2Nzc2MDE1MzUyMDU2LCAtMi45NjAwNTYxMDUxMDIzNTM3XSwgWzQzLjI3ODgzMzM1MjA5NDg0LCAtMi45NjExOTQ0MDgwMzk4NDM2XSwgWzQzLjI4MTcwNTMwMjk0MDcxNSwgLTIuOTYyODEyODUzNTQ3ODk3XSwgWzQzLjI4MTczMTcyOTYyMzA1NCwgLTIuOTYzMDI1MTI0MDUyMTEwNF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmYzhkNjIiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmYzhkNjIiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hYmQ2NTNlNTk1ZjY0MzVlOTJmNTUwZWRmNjU4YzVmMyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYzIzM2YwZDg2ZGNjNDY5NDk0ZDViODc0YjIwODM1OTUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzllYzdmMzVmMDM0YTQwZjVhYjE2NDgxNTc4MjA5NjNjID0gJChgPGRpdiBpZD0iaHRtbF85ZWM3ZjM1ZjAzNGE0MGY1YWIxNjQ4MTU3ODIwOTYzYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4xOTg8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDI1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBUeHVyZGluYWdhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwODUxMDwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jMjMzZjBkODZkY2M0Njk0OTRkNWI4NzRiMjA4MzU5NS5zZXRDb250ZW50KGh0bWxfOWVjN2YzNWYwMzRhNDBmNWFiMTY0ODE1NzgyMDk2M2MpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfZGY2ZTA3YTY1ODVkNGU1ODhiMGRkZTM1ZTRkODA4NGIuYmluZFBvcHVwKHBvcHVwX2MyMzNmMGQ4NmRjYzQ2OTQ5NGQ1Yjg3NGIyMDgzNTk1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF83YWE3NTkwMjQ1ODM0M2QwODljNWVmNWFmZjBjY2I4MSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZGQ3NDA0NWJmMmRmNGI2OTlkNjhiMTA1N2U5YjY5NmYgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODVdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1N10sIFs0My4yNzU4NzIxMjM4MzEwMiwgLTIuOTU5NzY0OTM3ODI4NjEzN10sIFs0My4yNzM3NjkyMjM3MjM0MzQsIC0yLjk1NzU0ODE4OTAzMzQ1NzRdLCBbNDMuMjcyNzEwNDIyMzU5NjUsIC0yLjk1NTQzNTEyMjQzMjUzM10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjcwOTQ2Njg1Njk1OTc1LCAtMi45NDE1NDI4OTg4NDY2NTNdLCBbNDMuMjY3ODExOTU3ODQ2NzIsIC0yLjkzOTcyOTQ5OTI4OTcwM10sIFs0My4yNjU0Nzc0Njg1MDE4NjQsIC0yLjkzNjgwMDAwOTk1NTQ4NDNdLCBbNDMuMjYyODgzMjk0MTk3OTcsIC0yLjkzNTYzNzUxNzMwMDk2OV0sIFs0My4yNjEyMTk2NTg3NSwgLTIuOTM0MTAxMjg1OTQwNTZdLCBbNDMuMjU4MTgyOTYwNTUwMzY0LCAtMi45MzUzNDc3NDg2NDMyOTk1XSwgWzQzLjI1NzQ4MjEyNDEzMTIsIC0yLjkzNzg1OTExMzA3OTIyNV0sIFs0My4yNTc3MTg2NDA0NDI0LCAtMi45NDI3MzgwMDIzMjY5OTQ1XSwgWzQzLjI1ODAwMDE5Mjc4OTYsIC0yLjk0OTA1MjUyOTEyOTYyMTVdLCBbNDMuMjYwMTAxMTU2ODc4MTgsIC0yLjk1Mjk3MTQ5Mzc1NTIwOTRdLCBbNDMuMjYyODE2NTYwMzAzMjgsIC0yLjk1NjM5OTc1NzUzMTYwNTddLCBbNDMuMjY0OTcyMTE1MzUxNjksIC0yLjk2MTIyMTA3NDYxMzAyNDNdLCBbNDMuMjc1Njg3MTg2OTA4NiwgLTIuOTcxOTAwMDE3MzYyNzM3N10sIFs0My4yNzMyMDY1NTg5ODYyOCwgLTIuOTcxNTc2MTQ5MzQ4MjI0XSwgWzQzLjI3MTk2NDk5NzA2NDkzNCwgLTIuOTY5NDM2NDA2NDgwNzg2M10sIFs0My4yNzExMjM4ODUzMzAxMzQsIC0yLjk3MDk5NjI4MDY5NTAxNDhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjOGRhMGNiIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjOGRhMGNiIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfN2FhNzU5MDI0NTgzNDNkMDg5YzVlZjVhZmYwY2NiODEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzAxM2ZkZDM3OWUxODRhNzRiNjI4MDM2YzU0ZTg3MDA0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yZTkzZjAxNDlmZjA0NzBhYTJlMTFlNTBlMTUwNTU3NCA9ICQoYDxkaXYgaWQ9Imh0bWxfMmU5M2YwMTQ5ZmYwNDcwYWEyZTExZTUwZTE1MDU1NzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MTk5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAwMjwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gWm9ycm90emE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0MzM0PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzAxM2ZkZDM3OWUxODRhNzRiNjI4MDM2YzU0ZTg3MDA0LnNldENvbnRlbnQoaHRtbF8yZTkzZjAxNDlmZjA0NzBhYTJlMTFlNTBlMTUwNTU3NCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9kZDc0MDQ1YmYyZGY0YjY5OWQ2OGIxMDU3ZTliNjk2Zi5iaW5kUG9wdXAocG9wdXBfMDEzZmRkMzc5ZTE4NGE3NGI2MjgwMzZjNTRlODcwMDQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2NlYzk1N2Q5OWU2MDRhNWY5ZTNjOTJlZjI3MzZlZTcxID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV83OGM1NTcyMmQzNzE0OThjYmRjMmQ4ZThlMTBkOWI4NCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI3MTEyMzg4NTMzMDEzNCwgLTIuOTcwOTk2MjgwNjk1MDE0OF0sIFs0My4yNzIxODc0MDEwNDIyNSwgLTIuOTY5MjQxODg2NjQ5NTcyN10sIFs0My4yNzMzOTkzNDY5NDgzOTUsIC0yLjk3MDYyODY5MzE4MTIwMzZdLCBbNDMuMjc1MDE3ODcxMzM1NDQsIC0yLjk3MjcxNjk5OTgwODgzMjddLCBbNDMuMjc3NDcwNDEyNzcyMzUsIC0yLjk3NDk0OTY5NDI1NDcyNTNdLCBbNDMuMjc2NjQ4MzIzMjk0OTM1LCAtMi45NzIxNjA1ODE1MDY5ODg1XSwgWzQzLjI2NDcyNDY4MDc1OTA4LCAtMi45NjExNDk5MDE0NjYwMjE2XSwgWzQzLjI2MjU0NzA5MTA5MzAwNSwgLTIuOTU2MzI4OTUzNDE4MjUzM10sIFs0My4yNTk0NjAwNDMzMDAxNSwgLTIuOTUyMjY5MTkzMzg1ODUzNF0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5M10sIFs0My4yNTc1ODc1Mzc3MDQxMDQsIC0yLjk0MjUyMzg1ODY3ODQzNV0sIFs0My4yNTgwNjQ0NTA0MzA1MjQsIC0yLjkzODUyNzI2Njk5MzAwMDddLCBbNDMuMjYwNjQwOTAyNzk5NTUsIC0yLjkzNzM5NDY3NDYzNzU1NjhdLCBbNDMuMjYyODA0NTE1NzY3ODEsIC0yLjkzNjQ5MTk1NjUwOTc0MjNdLCBbNDMuMjY1ODY0NzM2MTczODMsIC0yLjkzNjk4MjIwODQ2ODMyMTddLCBbNDMuMjY3NTc2MzIxNTY4MTg1LCAtMi45MzkzNzAwNTY2MjA0NTZdLCBbNDMuMjcxMDI2MDI0MjE1MDA0LCAtMi45NDEyMzk4Nzg2NjY0NDVdLCBbNDMuMjcxOTQ3ODA2MDc1NDcsIC0yLjk0NTA4NTM5NTc3MjI1NDddLCBbNDMuMjcyMTIxNTc1NDc5NDksIC0yLjk1MDU5NDIwODczNjI5MTVdLCBbNDMuMjczMzA0OTI4MDIyNiwgLTIuOTU1MzM0ODMxNTEzMTkxM10sIFs0My4yNzQ3MTk2MTQwMzY1NiwgLTIuOTU4NTg5NTcxNDUyMjExMl0sIFs0My4yNzY3NzYwMTUzNTIwNTYsIC0yLjk2MDA1NjEwNTEwMjM1MzddLCBbNDMuMjc4ODMzMzUyMDk0ODQsIC0yLjk2MTE5NDQwODAzOTg0MzZdLCBbNDMuMjgxNzA1MzAyOTQwNzE1LCAtMi45NjI4MTI4NTM1NDc4OTddLCBbNDMuMjgxNzMxNzI5NjIzMDU0LCAtMi45NjMwMjUxMjQwNTIxMTA0XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2U3OGFjMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2U3OGFjMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NlYzk1N2Q5OWU2MDRhNWY5ZTNjOTJlZjI3MzZlZTcxKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jMjU3ZWNjOGY4ODE0NTQ2ODMxZDcyOTNlMjBiMzYyMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNWY0YzhjNjJkYzQ3NDczNmJjOGZkMDllMjgwYTBmYTEgPSAkKGA8ZGl2IGlkPSJodG1sXzVmNGM4YzYyZGM0NzQ3MzZiYzhmZDA5ZTI4MGEwZmExIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwMDwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMTk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFpvcnJvdHphPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNDQ3ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jMjU3ZWNjOGY4ODE0NTQ2ODMxZDcyOTNlMjBiMzYyMy5zZXRDb250ZW50KGh0bWxfNWY0YzhjNjJkYzQ3NDczNmJjOGZkMDllMjgwYTBmYTEpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNzhjNTU3MjJkMzcxNDk4Y2JkYzJkOGU4ZTEwZDliODQuYmluZFBvcHVwKHBvcHVwX2MyNTdlY2M4Zjg4MTQ1NDY4MzFkNzI5M2UyMGIzNjIzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9kYzJmYzBhYWI1ZDA0YTk2OWZiMGE5N2ZlYzBhOTA5MyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMTk3ZjJhMjIyNmJiNDNmY2JhZWNhMjhhOGY4MzljZmQgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjYwNDIwNjk3NjQ2MTU0LCAtMi45MjI3NTUzODI5MDc4NDU0XSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NTIzMDg2NTMzMDkwNiwgLTIuOTI1MjIzOTc3ODMzMjQzNl0sIFs0My4yNjcxODQ2MDMzNzkwMTUsIC0yLjkyNTE4NDM2NjI3MTQ3ODddLCBbNDMuMjY5MzA3MTU0MzU4MywgLTIuOTI0NjExNTY4ODcyMTQ1XSwgWzQzLjI2NzE3NTU3MjQzNDQ2LCAtMi45MjEzMzQ1NDM1NDM1MjM0XSwgWzQzLjI2NzQzODAwNzgxMjE2LCAtMi45MTk4NzAwNDM3NTMyNzddLCBbNDMuMjY4MzE5OTIwNzcyODksIC0yLjkxODYxNDM1MDc4ODQwMl0sIFs0My4yNjkzMjExMjA3MDQ1LCAtMi45MTg2Mjk3MzY1MDA3ODk0XSwgWzQzLjI2Nzk5NDUzNzM0NzM2LCAtMi45MTU2ODQ3NzA5OTA0NTJdLCBbNDMuMjY1MzQ1NDk3OTc0ODEsIC0yLjkxMzMwNTM0NTkzNjQyNV0sIFs0My4yNjQ3NzI3MzM0NDM3MzUsIC0yLjkxMTc5NzgxNjY5NTgzNV0sIFs0My4yNjIyNTMwMzcyMjc3OSwgLTIuOTEzMDczMDM3ODA1MjY1NF0sIFs0My4yNjEyODk5NzA3ODUzMzQsIC0yLjkxMTQ0ODk5MDc2Mjc5MDVdLCBbNDMuMjYzMDMwMTUwNDEyMSwgLTIuOTEwOTE1NjY5MTYzNTM0NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNhNmQ4NTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNhNmQ4NTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kYzJmYzBhYWI1ZDA0YTk2OWZiMGE5N2ZlYzBhOTA5Myk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMGM0ODIzYzVjY2YzNGVmNDgwODkyNGViOGUxOTBhY2EgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzZmZjU4YWI2N2ExMjQwN2U5MWQ5MjFkYjYzMTkxOTI0ID0gJChgPGRpdiBpZD0iaHRtbF82ZmY1OGFiNjdhMTI0MDdlOTFkOTIxZGI2MzE5MTkyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDE8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDM2PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBBdHh1cmk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA2MzA1PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzBjNDgyM2M1Y2NmMzRlZjQ4MDg5MjRlYjhlMTkwYWNhLnNldENvbnRlbnQoaHRtbF82ZmY1OGFiNjdhMTI0MDdlOTFkOTIxZGI2MzE5MTkyNCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8xOTdmMmEyMjI2YmI0M2ZjYmFlY2EyOGE4ZjgzOWNmZC5iaW5kUG9wdXAocG9wdXBfMGM0ODIzYzVjY2YzNGVmNDgwODkyNGViOGUxOTBhY2EpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2U0ZjNmN2U2YTdmYTRhOGNiYTRkNDQ5ZjllN2QzNjU2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV81YjVjNmIwOTEzNTM0MzYzYjJiNjJkY2JkMzViODEzZCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MzAzMDE1MDQxMjEsIC0yLjkxMDkxNTY2OTE2MzUzNDVdLCBbNDMuMjYxMTIxNDI3MTk4OTIsIC0yLjkxMTIwMTgwMTUzNDg5NTVdLCBbNDMuMjYwNjU4MTQyOTQ3NTksIC0yLjkxMjU5NDY0MzM4ODA4OF0sIFs0My4yNjE1MzEwMDIwNjU0MSwgLTIuOTE1Mjc0MjY3NTQ0NDQ2N10sIFs0My4yNjQ5MDAyNzM4NDU0NiwgLTIuOTE4MzM1NzMyMjAwMjYwOF0sIFs0My4yNjQ5ODIyNjEyODg3NSwgLTIuOTIyNDc2NDcwNzUwMjU5N10sIFs0My4yNjI4NDUxMjExMjIxMDUsIC0yLjkyMzA1OTE0MzM5OTg2MTZdLCBbNDMuMjYwNDExNTY5MTE0ODQ0LCAtMi45MjI5MzYxOTIyNTc1NDA1XSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU0NzczMDc3NzUxNTIsIC0yLjkyNjc0Mzg5NDM0MzA3NDRdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmZkOTJmIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmZkOTJmIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZTRmM2Y3ZTZhN2ZhNGE4Y2JhNGQ0NDlmOWU3ZDM2NTYpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2RlNzhlNWIwOWQyOTQ2MTZiZGE4YjNhYThmYzU2ZDEwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yNjQ0NTIyZDYzM2U0YjRmOTdjOTEyNDk0NzNlODBlZSA9ICQoYDxkaXYgaWQ9Imh0bWxfMjY0NDUyMmQ2MzNlNGI0Zjk3YzkxMjQ5NDczZTgwZWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjAyPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAxODwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwNjQ3MTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kZTc4ZTViMDlkMjk0NjE2YmRhOGIzYWE4ZmM1NmQxMC5zZXRDb250ZW50KGh0bWxfMjY0NDUyMmQ2MzNlNGI0Zjk3YzkxMjQ5NDczZTgwZWUpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNWI1YzZiMDkxMzUzNDM2M2IyYjYyZGNiZDM1YjgxM2QuYmluZFBvcHVwKHBvcHVwX2RlNzhlNWIwOWQyOTQ2MTZiZGE4YjNhYThmYzU2ZDEwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9kODFkYWY2ZDQ3MzY0YzQ2ODU3Y2ViZjJiYTA3OTY3YyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfYzE0OWYyNmI4MWIxNDk1Mjk1NTQ4YjViYTEzNGRiOGMgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDc5NzU3NzQ1NTkzNjQsIC0yLjk1MDY0NDA5MzA3NTMyMzVdLCBbNDMuMjQ5MDc2OTE3MzcxNjc0LCAtMi45NTAyNzAyODQ0NzkzNjhdLCBbNDMuMjUxMjE5OTg0ODExNDcsIC0yLjk0ODg3NjcyMDQ3NjU3M10sIFs0My4yNDk4MTg5NDc1Mjk3NTQsIC0yLjk0OTQ5NDA1Nzk1ODg5MTVdLCBbNDMuMjQ4NjUzODQzOTA5NjQsIC0yLjk0OTMwMjMxMjI5NDk3MTVdLCBbNDMuMjQ2OTMxMjAzNjE1MTYsIC0yLjk0ODI2MzkxOTQ3NDIwNDZdLCBbNDMuMjQ5NDE2OTc4MDE4NDk1LCAtMi45NDY2MTE2NDM0MTI2OTA2XSwgWzQzLjI1MjI1NjY0MzY4Njc2LCAtMi45NDYxODMzMzE4ODU3ODldLCBbNDMuMjU0MzMwODMwMzM3NCwgLTIuOTQ0NTk0Mzk5OTQxNzU4M10sIFs0My4yNTY2NDczMTU2MDE1NSwgLTIuOTQyMjY1MTIyMzIxMjcwNF0sIFs0My4yNTg2MDM4NTgwMjkwMywgLTIuOTQxMjUyMTYyMTAzMTQ1Nl0sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzE2OTEyMzc4MDI4LCAtMi45MzYwNTIwMTI1MDU5Mzg2XSwgWzQzLjI2MzYyOTYzMTgzOTAzLCAtMi45MzQ1ODY4OTAxNjEyMzldLCBbNDMuMjY2NjkxMjk5MTA1NjIsIC0yLjkzMzMzOTk3MzkzMDE2ODddLCBbNDMuMjY5NjY4NjEzMzgzNzMsIC0yLjkyMjQ3OTIxNDQ3ODM3NjRdLCBbNDMuMjY3NjQxNDEwMjQ3MDYsIC0yLjkxODQyNjYyNDc1MTk5Ml0sIFs0My4yNjU1MzA4MjE4MTc2NTYsIC0yLjkxNjg3ODA2NzMyMDYyOF0sIFs0My4yNjE0MTgyNjg1MTc4MTUsIC0yLjkxNTg3MDE2Nzk2NDgyXSwgWzQzLjI2MjM5MTQwMDA3MTE0NSwgLTIuOTE1MzA3MzU0MzgyOTQ5XSwgWzQzLjI2NDY2NjYxMjM3MDc5LCAtMi45MTM2MTQ4MjQyODU5Nzc2XSwgWzQzLjI2NDc3MjczMzQ0MzczNSwgLTIuOTExNzk3ODE2Njk1ODM1XSwgWzQzLjI2MjI1MzAzNzIyNzc5LCAtMi45MTMwNzMwMzc4MDUyNjU0XSwgWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNWM0OTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNWM0OTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9kODFkYWY2ZDQ3MzY0YzQ2ODU3Y2ViZjJiYTA3OTY3Yyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfODMwNDk0MzRhMDdmNDcwYTlhNWZlODcyYzM4ODQxZWYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2M0NGViNTVlM2FhNTRjYWJhMzBjMWRhYjljOGQxYjQ0ID0gJChgPGRpdiBpZD0iaHRtbF9jNDRlYjU1ZTNhYTU0Y2FiYTMwYzFkYWI5YzhkMWI0NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDM8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTExPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBCZXRvbGF0emE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE1Mjk5PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzgzMDQ5NDM0YTA3ZjQ3MGE5YTVmZTg3MmMzODg0MWVmLnNldENvbnRlbnQoaHRtbF9jNDRlYjU1ZTNhYTU0Y2FiYTMwYzFkYWI5YzhkMWI0NCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9jMTQ5ZjI2YjgxYjE0OTUyOTU1NDhiNWJhMTM0ZGI4Yy5iaW5kUG9wdXAocG9wdXBfODMwNDk0MzRhMDdmNDcwYTlhNWZlODcyYzM4ODQxZWYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2IxZDVkZmRkODYyODQwOTBhYjlmZGVjOGQ5ZjNmODczID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9hOTI0ZWFkZTFkOTk0NWRiODdhOGYzNzQxODFmNzRiZSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNV0sIFs0My4yNjA2NTgxNDI5NDc1OSwgLTIuOTEyNTk0NjQzMzg4MDg4XSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2NTUxMzY0MzEwODQ2LCAtMi45MTY2ODMxMDkwNzgxNjhdLCBbNDMuMjY3ODMwMzcwMzg5NTc1LCAtMi45MTg0MzQ4NTAxODE5OTE0XSwgWzQzLjI2OTgzMTM3MTQ4NDkyNiwgLTIuOTIyNTcyODQ1NTE3NTA3N10sIFs0My4yNzAwODM4OTQ3OTAyMDQsIC0yLjkyNjAwMzU2MjEyMjg3MzNdLCBbNDMuMjY2MDg0OTA3NjE1OTIsIC0yLjkzMzcwNTgzNDYwNzY2NjNdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1XSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1Mjg4OTUzNTc0Mzk1NCwgLTIuOTQ2NDc5ODA0MjAzNTQ2NV0sIFs0My4yNTE2MDg4MjEyODg1MiwgLTIuOTQ3NTg4NDMzMzc1NTAwNV0sIFs0My4yNTE4ODg5NjY3NDI5NzUsIC0yLjk0ODkxMTU0NjM3MzkxNTddLCBbNDMuMjUxMjE5OTg0ODExNDcsIC0yLjk0ODg3NjcyMDQ3NjU3M10sIFs0My4yNDk4MTg5NDc1Mjk3NTQsIC0yLjk0OTQ5NDA1Nzk1ODg5MTVdLCBbNDMuMjQ4NjUzODQzOTA5NjQsIC0yLjk0OTMwMjMxMjI5NDk3MTVdLCBbNDMuMjQ2OTg4MzgzMTI1ODk1LCAtMi45NTA2MDIzMjQyOTE4NTk1XSwgWzQzLjI0Nzk3NTc3NDU1OTM2NCwgLTIuOTUwNjQ0MDkzMDc1MzIzNV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNiM2IzYjMiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNiM2IzYjMiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9iMWQ1ZGZkZDg2Mjg0MDkwYWI5ZmRlYzhkOWYzZjg3Myk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmIzY2IxOTk1ZGE4NDg3ZDhlYjg4OGQzOWMwYTViOWMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzEwZDhlMzk4ODc5YzRjYmZhYzlkMmExNWQwYjMwZmM3ID0gJChgPGRpdiBpZD0iaHRtbF8xMGQ4ZTM5ODg3OWM0Y2JmYWM5ZDJhMTVkMGIzMGZjNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDE2PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBCZXRvbGF0emE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE1NDYxPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2JiM2NiMTk5NWRhODQ4N2Q4ZWI4ODhkMzljMGE1YjljLnNldENvbnRlbnQoaHRtbF8xMGQ4ZTM5ODg3OWM0Y2JmYWM5ZDJhMTVkMGIzMGZjNyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9hOTI0ZWFkZTFkOTk0NWRiODdhOGYzNzQxODFmNzRiZS5iaW5kUG9wdXAocG9wdXBfYmIzY2IxOTk1ZGE4NDg3ZDhlYjg4OGQzOWMwYTViOWMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2U3Mjc0ODc5MzU5YjQ4NmI5ZTYwMDJlZDljZjdjMjY4ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV81ZDE2ZmU3OWI1M2Y0YmQ2YWRjOTRhNWMxNTQ5NTc5MyA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2NTk2NDUxMjk5Nzk5NiwgLTIuOTE4MDg1NzMzMTAzNjc4Ml0sIFs0My4yNjQ5MDAyNzM4NDU0NiwgLTIuOTE4MzM1NzMyMjAwMjYwOF0sIFs0My4yNjY2OTg1ODIzOTgzNywgLTIuOTE5NTYwODIwMjg2NTMxM10sIFs0My4yNjcyNjE2NjA2Njg4ODYsIC0yLjkyMTUwNTA4NzA3NzIxN10sIFs0My4yNjY5MTQ2NTQzNzU2NiwgLTIuOTIyNzM0ODUyNzQ5MzE2XSwgWzQzLjI2ODA1MjU2OTI1NTkzNiwgLTIuOTI0NDQzNjg4MDc2MzMyXSwgWzQzLjI2NjIwODg5NDUyMjgyLCAtMi45MjU0OTA5Nzc4OTg2MDA3XSwgWzQzLjI2NDQ5MjEzMTYwMDYxLCAtMi45MjQ1MDYwNzU4MzQzMDMzXSwgWzQzLjI2Mjg0NTEyMTEyMjEwNSwgLTIuOTIzMDU5MTQzMzk5ODYxNl0sIFs0My4yNTk3OTU4MzMxMjMyOSwgLTIuOTI0MDg3Mjc5MzEzOTQ5XSwgWzQzLjI2MTczMjU4ODI2MTI4LCAtMi45Mjg5NjcwNDEzODU2NDgzXSwgWzQzLjI2MjcwOTg2NzM5MDk3LCAtMi45MzM0NTcyMzg3MDIxNTc0XSwgWzQzLjI2MzI4OTcyNTMzOTU1LCAtMi45MzU5ODcyNzQzNDczODM0XSwgWzQzLjI2MzY0NDYyMjM5OTU0NiwgLTIuOTM5Mjg2MjQ1ODEyNDEwNV0sIFs0My4yNjExNzEyMTI1NDMxMywgLTIuOTQwMjcxOTczOTg4NDg2NF0sIFs0My4yNjEzNTMxODczNDUxMTUsIC0yLjk0MTk5OTg1OTg1Mjc4NV0sIFs0My4yNjIxNTMxMDM5MjUwOTQsIC0yLjk0NTY0OTAzNzQ2MjQ5MTddLCBbNDMuMjYwNDQ1ODI2NjkwOTc2LCAtMi45NDcxNzI2MDI3Nzc4ODQ2XSwgWzQzLjI1ODAwMDE5Mjc4OTYsIC0yLjk0OTA1MjUyOTEyOTYyMTVdLCBbNDMuMjYwMTAxMTU2ODc4MTgsIC0yLjk1Mjk3MTQ5Mzc1NTIwOTRdLCBbNDMuMjYxMDA0NTk5OTg5MTg1LCAtMi45NTY1NzkwODc3NjI1MjQ0XSwgWzQzLjI2MTgxNjc0NjY2OTA4LCAtMi45NTk5NDk2NDU1MzE0OTFdLCBbNDMuMjYzNjk5MDMwNzMwMzIsIC0yLjk2MjYwNDcwNDEzODA5MV0sIFs0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2U3Mjc0ODc5MzU5YjQ4NmI5ZTYwMDJlZDljZjdjMjY4KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zZDVhYWY4NDMwMDI0ZmUwYjVlYjY2MjIyY2M5Zjc1OCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOWVkMTA4ZDU0NDI5NGFhNGIwZGVkZmUxZWE3YjVmODQgPSAkKGA8ZGl2IGlkPSJodG1sXzllZDEwOGQ1NDQyOTRhYTRiMGRlZGZlMWVhN2I1Zjg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwNTwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMTQ8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEFsdGFtaXJhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjU0MzwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZDVhYWY4NDMwMDI0ZmUwYjVlYjY2MjIyY2M5Zjc1OC5zZXRDb250ZW50KGh0bWxfOWVkMTA4ZDU0NDI5NGFhNGIwZGVkZmUxZWE3YjVmODQpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNWQxNmZlNzliNTNmNGJkNmFkYzk0YTVjMTU0OTU3OTMuYmluZFBvcHVwKHBvcHVwXzNkNWFhZjg0MzAwMjRmZTBiNWViNjYyMjJjYzlmNzU4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9mMWZjZWRiZWI0OWM0YjE3YmY3YjNmZmEwN2Q5ZGNkNyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfYzE4M2Q1MWFiNzlkNDQ4OWEzNTkwMjk2NTUyYTYwZjkgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3XSwgWzQzLjI2MzMwODA1MTgxNzE2LCAtMi45NjI0MDExNDYxMzI3NTRdLCBbNDMuMjYxMTUzODAwOTI1NzIsIC0yLjk1OTUyNjEzMTUwMTk5NjNdLCBbNDMuMjYwNjc1OTc0NDU4NTIsIC0yLjk1NTk0ODE0ODc5MTY5Ml0sIFs0My4yNTk5Njg4ODg2MTI3OTYsIC0yLjk1MTIzNzY2NjE1Mjg3MzZdLCBbNDMuMjYxMDEyNjUxNDk5MDQ0LCAtMi45NDg1NDc3MjAyMDM0NF0sIFs0My4yNjQ5MjYxNjUzNDEzMzYsIC0yLjk0NDA1OTk3MDk0MjI5MDhdLCBbNDMuMjY0MTQ3NDY5MTg4Nzg1LCAtMi45NDA1MTk1NDA0ODE0NjddLCBbNDMuMjYzMzQ4MDExNTQyNzQsIC0yLjkzNjg2OTI3MTAzMDI2MzddLCBbNDMuMjYyNjkwNzYxOTc3MDMsIC0yLjkzMzc1MDk5NjQzMTU1OV0sIFs0My4yNjE1Mjk5NDY0MDAxNzQsIC0yLjkyODQ3NjU4MDg4NDY1MTNdLCBbNDMuMjYzOTM4NzU5MTgwODgsIC0yLjkyMzU3OTA4MDQ4MDcyMjddLCBbNDMuMjY1MjMwODY1MzMwOTA2LCAtMi45MjUyMjM5Nzc4MzMyNDM2XSwgWzQzLjI2NzE4NDYwMzM3OTAxNSwgLTIuOTI1MTg0MzY2MjcxNDc4N10sIFs0My4yNjkzMDcxNTQzNTgzLCAtMi45MjQ2MTE1Njg4NzIxNDVdLCBbNDMuMjY3MTc1NTcyNDM0NDYsIC0yLjkyMTMzNDU0MzU0MzUyMzRdLCBbNDMuMjY2NzA5MTYyMjA4NzMsIC0yLjkxOTczNzk1NDEwODExNDNdLCBbNDMuMjY1OTY0NTEyOTk3OTk2LCAtMi45MTgwODU3MzMxMDM2NzgyXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZjOGQ2MiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZjOGQ2MiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2YxZmNlZGJlYjQ5YzRiMTdiZjdiM2ZmYTA3ZDlkY2Q3KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lMGE4Nzk5NjUwMzU0YzY5YWVkNTU2YTM2NmYxNjYxZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNTBhMmJjNTQ4NmEzNDg5ZWFiZmMyNWI0ZDY3YTNjMjQgPSAkKGA8ZGl2IGlkPSJodG1sXzUwYTJiYzU0ODZhMzQ4OWVhYmZjMjViNGQ2N2EzYzI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwNjwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMjI8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEFsdGFtaXJhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjcyNjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMGE4Nzk5NjUwMzU0YzY5YWVkNTU2YTM2NmYxNjYxZi5zZXRDb250ZW50KGh0bWxfNTBhMmJjNTQ4NmEzNDg5ZWFiZmMyNWI0ZDY3YTNjMjQpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYzE4M2Q1MWFiNzlkNDQ4OWEzNTkwMjk2NTUyYTYwZjkuYmluZFBvcHVwKHBvcHVwX2UwYTg3OTk2NTAzNTRjNjlhZWQ1NTZhMzY2ZjE2NjFmKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9mZDZiMGE1YTlkY2Q0Y2RlYjIzZWI2NzE5NDA3MzIyNCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfYTEzMjY3YjhiODE2NGZhZDg5ODkyNzU1NzA0MDg2OTEgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTA4MTg2NzYzMTU4NywgLTIuOTA0NjM2MTQ2NzgwNDk5OF0sIFs0My4yNTI1NjE5MzkyNzc2OSwgLTIuOTAyMzM3MDYzMTA4MTk1M10sIFs0My4yNTUwNDUxNjY4NDMwNTQsIC0yLjkwMDk4Nzk4NjMyOTIzMjNdLCBbNDMuMjU2MzAzMjIyNDc2MDQsIC0yLjkwMzgyNzUxOTU4NzMyOTNdLCBbNDMuMjU3MDM1NTUzNTgwNTgsIC0yLjkwNjg1Mjg0NTQwNTczMTRdLCBbNDMuMjU3OTc1MzY0NzMzNDU0LCAtMi45MTA5NTEwODQwNTI0NDkzXSwgWzQzLjI2MDY1ODE0Mjk0NzU5LCAtMi45MTI1OTQ2NDMzODgwODhdLCBbNDMuMjYxNTMxMDAyMDY1NDEsIC0yLjkxNTI3NDI2NzU0NDQ0NjddLCBbNDMuMjY0OTAwMjczODQ1NDYsIC0yLjkxODMzNTczMjIwMDI2MDhdLCBbNDMuMjY0OTgyMjYxMjg4NzUsIC0yLjkyMjQ3NjQ3MDc1MDI1OTddLCBbNDMuMjYyODQ1MTIxMTIyMTA1LCAtMi45MjMwNTkxNDMzOTk4NjE2XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYwODQ5MTQxNTY2OCwgLTIuOTI3OTE2ODI1MzQwMzIxNl0sIFs0My4yNTc1OTI5MzAxMTY3MiwgLTIuOTMzNTM0MjkwMDYwNDQxM10sIFs0My4yNTY1MTAzMDE5MzYwNDYsIC0yLjkzMTc1ODYwNDU1OTE5N10sIFs0My4yNTQzMjk5NTU4MTM5MywgLTIuOTMyMDgzNjU4NzI1NTQ5N10sIFs0My4yNTI3MjM2MjExOTg0NywgLTIuOTMyNjI0OTYwODA5MzMzXSwgWzQzLjI1MDUzMTEzMzU2ODU2NSwgLTIuOTI5OTA1MDQ0Nzk5ODQ5NF0sIFs0My4yNDkzNTQ4NTU0ODQxMzUsIC0yLjkyNzkwNzUzNDA0MTAzNjVdLCBbNDMuMjQ5NDE3NjEwMjcwODgsIC0yLjkyNjg5ODg5NzA1NTMxMDVdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjOGRhMGNiIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjOGRhMGNiIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZmQ2YjBhNWE5ZGNkNGNkZWIyM2ViNjcxOTQwNzMyMjQpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzhmNjdjMzBhZGViNjQ0YjZiMDgzYmI5MmZkMzQwOWIxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82MjdhNDI1YzZhNzU0YjYxYjk4MGJjNzYwMDY2N2UwMiA9ICQoYDxkaXYgaWQ9Imh0bWxfNjI3YTQyNWM2YTc1NGI2MWI5ODBiYzc2MDA2NjdlMDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjA3PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAyMjwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTWlyaWJpbGxhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwOTY1ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84ZjY3YzMwYWRlYjY0NGI2YjA4M2JiOTJmZDM0MDliMS5zZXRDb250ZW50KGh0bWxfNjI3YTQyNWM2YTc1NGI2MWI5ODBiYzc2MDA2NjdlMDIpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYTEzMjY3YjhiODE2NGZhZDg5ODkyNzU1NzA0MDg2OTEuYmluZFBvcHVwKHBvcHVwXzhmNjdjMzBhZGViNjQ0YjZiMDgzYmI5MmZkMzQwOWIxKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9kYzYyZDljM2M0NzE0MjFlODAxNjI0ZmVmNGIwZTMxNyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNjY5MzBmYmVhMGI0NGM2YTg1NDlmYjE0ODY1MzljNTMgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDk0MTc2MTAyNzA4OCwgLTIuOTI2ODk4ODk3MDU1MzEwNV0sIFs0My4yNTEyMTY4MzUyMzc3MDYsIC0yLjkyOTI2MzUzNzkwMDUxNTRdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzNdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzNdLCBbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4XSwgWzQzLjI1Mjc4NjI0MDY4OTU0NSwgLTIuOTMyNTU3MDA0OTYxODk2OF0sIFs0My4yNTQ4Nzc5NDM1OTI0OSwgLTIuOTMzNDAzOTgzNjE1NTc1NF0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzXSwgWzQzLjI1NDg3Nzk0MzU5MjQ5LCAtMi45MzM0MDM5ODM2MTU1NzU0XSwgWzQzLjI1NjM0MzgyODU1OTc5LCAtMi45MzMyMTUxNzI1Mzg3OTNdLCBbNDMuMjU3OTE0NjIxNjU1NzgsIC0yLjkzMjgyMjI2MjI4ODA5MV0sIFs0My4yNTc5MTQ2MjE2NTU3OCwgLTIuOTMyODIyMjYyMjg4MDkxXSwgWzQzLjI2MTQ0ODE2ODIwNTc5LCAtMi45MjcxOTAxNzQ2MzQ4Njg3XSwgWzQzLjI2MTQ0ODE2ODIwNTc5LCAtMi45MjcxOTAxNzQ2MzQ4Njg3XSwgWzQzLjI2NDA5OTUxMzUwMDAyLCAtMi45MjI1OTAxMTIwNzI1ODc3XSwgWzQzLjI2NDA5OTUxMzUwMDAyLCAtMi45MjI1OTAxMTIwNzI1ODc3XSwgWzQzLjI2NDc1MDM3MzU0NzA0NSwgLTIuOTE4NDEzODgwMDM1OTk4NF0sIFs0My4yNjA3ODUxNzgzMjU1NSwgLTIuOTE0ODA0NDU0MTk2MDE4M10sIFs0My4yNjQ3NTAzNzM1NDcwNDUsIC0yLjkxODQxMzg4MDAzNTk5ODRdLCBbNDMuMjYwNzg1MTc4MzI1NTUsIC0yLjkxNDgwNDQ1NDE5NjAxODNdLCBbNDMuMjU4OTgxNTcxMzU2NzA2LCAtMi45MTM4NjcwNTc0MjM3NDM3XSwgWzQzLjI1ODk4MTU3MTM1NjcwNiwgLTIuOTEzODY3MDU3NDIzNzQzN10sIFs0My4yNTcyMjk3MTY1ODA3LCAtMi45MDk4NDIxNzU0Mjk4OTM1XSwgWzQzLjI1Njg0MzQ0NzE3NjI5LCAtMi45MDY4MzE4NjAwMjk3NjgyXSwgWzQzLjI1NzIyOTcxNjU4MDcsIC0yLjkwOTg0MjE3NTQyOTg5MzVdLCBbNDMuMjU2ODQzNDQ3MTc2MjksIC0yLjkwNjgzMTg2MDAyOTc2ODJdLCBbNDMuMjU2NDY1NzMyNTQ3OTIsIC0yLjkwNDY5MjY3NTIxODMxMDRdLCBbNDMuMjU1MDQyMzY3NTM3ODMsIC0yLjkwMTEyNTg1MzExNDgwODVdLCBbNDMuMjU2NDY1NzMyNTQ3OTIsIC0yLjkwNDY5MjY3NTIxODMxMDRdLCBbNDMuMjUzMzYwMDMxNjQ4ODUsIC0yLjkwMzcyMzMzNzMzOTQ4M10sIFs0My4yNTUwNDIzNjc1Mzc4MywgLTIuOTAxMTI1ODUzMTE0ODA4NV0sIFs0My4yNTMzNjAwMzE2NDg4NSwgLTIuOTAzNzIzMzM3MzM5NDgzXSwgWzQzLjI1MDgxODY3NjMxNTg3LCAtMi45MDQ2MzYxNDY3ODA0OTk4XSwgWzQzLjI1MDgxODY3NjMxNTg3LCAtMi45MDQ2MzYxNDY3ODA0OTk4XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2U3OGFjMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2U3OGFjMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2RjNjJkOWMzYzQ3MTQyMWU4MDE2MjRmZWY0YjBlMzE3KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9kNmZmZWQ0Njc3NzI0MmFlOGY0ZTRiMjhmZjhjNjc5MCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZTYwOWQ2ZDc0Y2FkNGQyMmI1ZTg5Yzc1MTFjOTkzNDIgPSAkKGA8ZGl2IGlkPSJodG1sX2U2MDlkNmQ3NGNhZDRkMjJiNWU4OWM3NTExYzk5MzQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIwODwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wNzY8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IE1pcmliaWxsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MzI0MjE8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDZmZmVkNDY3NzcyNDJhZThmNGU0YjI4ZmY4YzY3OTAuc2V0Q29udGVudChodG1sX2U2MDlkNmQ3NGNhZDRkMjJiNWU4OWM3NTExYzk5MzQyKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzY2OTMwZmJlYTBiNDRjNmE4NTQ5ZmIxNDg2NTM5YzUzLmJpbmRQb3B1cChwb3B1cF9kNmZmZWQ0Njc3NzI0MmFlOGY0ZTRiMjhmZjhjNjc5MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfOTM5YzE0MTRhYTQxNGI5YmEzNTU4MzM0NjI3ZmVjN2UgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2FhYTkzNjUzNDUyZTRlOGNhOGQ5ZDBjNWUzMmMzOWQ3ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV0sIFs0My4yNTQ5MTE4MjgxMzg4LCAtMi45MDcyMDg0MjI4MDkyNjY1XSwgWzQzLjI1NjEyMDkwOTAwNjExLCAtMi45MDQ0MTMzNTgzNjY5OTM4XSwgWzQzLjI1ODQ0MDgwNTQ5MjA2NCwgLTIuOTAyNzIyODkyNDc1MTc3XSwgWzQzLjI1OTMyODg5NzgzMzIyLCAtMi45MDAyNzkzMjcxNzE3MzI2XSwgWzQzLjI1NzcwODMxMzc2MTc0NiwgLTIuODk5MDQzOTY3Mjc2NDM0M10sIFs0My4yNTc5ODgxODU4NDc4NCwgLTIuODk4MDA2MzA4ODY0NTcxM10sIFs0My4yNTg5MDY5MDYyNjUxNzUsIC0yLjg5NzcwMjc2MDU1NzgwMjddLCBbNDMuMjU3Mzc5NTY3NDA4MTksIC0yLjg5NjUwNjExNjY5Mzc0NF0sIFs0My4yNTg3NTU2ODc0Mzc5MDUsIC0yLjg5NjcyMzgxMjEwMzYzMl0sIFs0My4yNjA0OTgxNTkzNDU1NjYsIC0yLjg5NzkwNzI2ODY4ODQ2NTddLCBbNDMuMjYwODQ5NjQ1MTI2MTksIC0yLjg5ODgyNzIzNDUyMzA0NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNhNmQ4NTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNhNmQ4NTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF85MzljMTQxNGFhNDE0YjliYTM1NTgzMzQ2MjdmZWM3ZSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNDk0NjIxM2IyODI1NGMzODkyZTVhYzg5MDQ2YTc0NWQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RkNmZhMzU4MjAwZjQ5MjZiYTc0ZjAyYzZjYzJkZjliID0gJChgPGRpdiBpZD0iaHRtbF9kZDZmYTM1ODIwMGY0OTI2YmE3NGYwMmM2Y2MyZGY5YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMDk8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDI4PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBTYW50dXR4dTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTE2NTQ8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNDk0NjIxM2IyODI1NGMzODkyZTVhYzg5MDQ2YTc0NWQuc2V0Q29udGVudChodG1sX2RkNmZhMzU4MjAwZjQ5MjZiYTc0ZjAyYzZjYzJkZjliKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2FhYTkzNjUzNDUyZTRlOGNhOGQ5ZDBjNWUzMmMzOWQ3LmJpbmRQb3B1cChwb3B1cF80OTQ2MjEzYjI4MjU0YzM4OTJlNWFjODkwNDZhNzQ1ZCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfOTc0MmMyNTgwYzIxNDhiMjkyMDY4M2UxYzk2Zjk1NDEgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2Q4ZTc3ZDI4Y2RiNjQxMmRhMWNjNzg0NmZiZmMxOWYzID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjYwODQ5NjQ1MTI2MTksIC0yLjg5ODgyNzIzNDUyMzA0NV0sIFs0My4yNTczNzg5NTM2OTg4NiwgLTIuODk5MTkxMTg4NjExMzkwNl0sIFs0My4yNTU1Njk5NTcxOTY0LCAtMi45MDA3NzU1NjU3MTRdLCBbNDMuMjUzMDI2ODQ1NDY0NTc1LCAtMi45MDIyMTE4NzYxNjUyMTldLCBbNDMuMjUwMzM2NDEwMTcwNzQ2LCAtMi45MDM2NzE5MzE3NDkyOTA3XSwgWzQzLjI0OTU1NjIyNTk1MDgxLCAtMi45MDg0MDE2MDAwMTYwNzhdLCBbNDMuMjUxNjU4NzQ5Njc1NzIsIC0yLjkxMDU4ODI5MjA0OTU2OTZdLCBbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmZmQ5MmYiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmZmQ5MmYiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF85NzQyYzI1ODBjMjE0OGIyOTIwNjgzZTFjOTZmOTU0MSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYTYyZThlNzNlYzU0NDk3MDhlOTI0YTA0ZGI3ZmRiMDkgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RhMTY5MmM0MzMxMTQ2MjhiNDZkODJkYWFmMDg4YzhmID0gJChgPGRpdiBpZD0iaHRtbF9kYTE2OTJjNDMzMTE0NjI4YjQ2ZDgyZGFhZjA4OGM4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTA8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDIxPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBTYW50dXR4dTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTE3ODA8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYTYyZThlNzNlYzU0NDk3MDhlOTI0YTA0ZGI3ZmRiMDkuc2V0Q29udGVudChodG1sX2RhMTY5MmM0MzMxMTQ2MjhiNDZkODJkYWFmMDg4YzhmKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2Q4ZTc3ZDI4Y2RiNjQxMmRhMWNjNzg0NmZiZmMxOWYzLmJpbmRQb3B1cChwb3B1cF9hNjJlOGU3M2VjNTQ0OTcwOGU5MjRhMDRkYjdmZGIwOSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfMDVlMmRiYmZjZDQ0NGUzZTk3NGM2MzUzODk5ZTcwYjEgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzE3NjMwNmRhOTdkOTQ5Mjk4MDc0MzgyZTFiYjgxNDM0ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjQwOTc3MzUxNTI5Mjk1LCAtMi45MjE0NjQzMDE0OTg4NzQ2XSwgWzQzLjI0NDE5OTUyMzgzNjkyNiwgLTIuOTE3MzY5NDU0NzA4MjIzNF0sIFs0My4yNDY0NzIzMzI4MzIzMjYsIC0yLjkwOTIyOTQ0MjM1NDMyOV0sIFs0My4yNDY4MjY5MDAzOTkyNTYsIC0yLjkxMTMzMjg3ODgwMTkxMDZdLCBbNDMuMjQ4NDUwNjQzMTEyNjc2LCAtMi45MTI1NjgzNTEyNjgxMjhdLCBbNDMuMjUwNjc1Mjc2MTYyODIsIC0yLjkxMTg0MzAzNjE4NzE5N10sIFs0My4yNTA5OTk2NTM4Nzk1NywgLTIuOTE0NzIxMzI2NTg0MDkwNl0sIFs0My4yNDk5OTIwNjU1MTM2MywgLTIuOTE3NDc4MjU3MTU3MDY4NV0sIFs0My4yNDg4ODQ0NzMwNDk2OCwgLTIuOTE5MzM3MDM0NDkzNTA5NV0sIFs0My4yNTE1MzEzNzUyNzYxLCAtMi45MjE0MTQ0NDUyNTE1MDY3XSwgWzQzLjI1MzU5NjQ3MzY4ODQ3NSwgLTIuOTIxMjc0MDgwMTQxNTI5M10sIFs0My4yNTUwMzA2NTIxMjg3LCAtMi45MjIwMDE3MTkxMzEwNzY4XSwgWzQzLjI1NjU5NjMxNDgxMzM4NiwgLTIuOTI1NzA3OTA0NzA5NDU0NV0sIFs0My4yNTk3OTU4MzMxMjMyOSwgLTIuOTI0MDg3Mjc5MzEzOTQ5XSwgWzQzLjI2MTQ3ODg5MDA2MDk4NSwgLTIuOTI3ODI3ODU2ODUxMjg4OF0sIFs0My4yNjA3NDYwNTMzNzYwMjUsIC0yLjkyOTA0NTcwMzIyNDE0NF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNWM0OTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNWM0OTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNWUyZGJiZmNkNDQ0ZTNlOTc0YzYzNTM4OTllNzBiMSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNzFjOTJmNWFhZTBkNGRlNjk2ZDU1NjhhMTk3NTA0ZGUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2ExOGY4OTdkODM1YTQyODlhOTYzZDViMzkyNGFiM2Q4ID0gJChgPGRpdiBpZD0iaHRtbF9hMThmODk3ZDgzNWE0Mjg5YTk2M2Q1YjM5MjRhYjNkOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTM8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDQwPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBQbGF6YSBCaXJpYmlsYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTU3Mzk8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNzFjOTJmNWFhZTBkNGRlNjk2ZDU1NjhhMTk3NTA0ZGUuc2V0Q29udGVudChodG1sX2ExOGY4OTdkODM1YTQyODlhOTYzZDViMzkyNGFiM2Q4KTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzE3NjMwNmRhOTdkOTQ5Mjk4MDc0MzgyZTFiYjgxNDM0LmJpbmRQb3B1cChwb3B1cF83MWM5MmY1YWFlMGQ0ZGU2OTZkNTU2OGExOTc1MDRkZSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfYTlkMDFkYWQxMDJmNDZlY2EzNDU5NjVkMjFjZWU4YjAgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2FiZDgxMDI4MGZhMDRkOGE5OTRiYzEyZTg2YzZmMzE3ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjYwNzQ2MDUzMzc2MDI1LCAtMi45MjkwNDU3MDMyMjQxNDRdLCBbNDMuMjY0MDk5NTEzNTAwMDIsIC0yLjkyMjU5MDExMjA3MjU4NzddLCBbNDMuMjY0NzUwMzczNTQ3MDQ1LCAtMi45MTg0MTM4ODAwMzU5OTg0XSwgWzQzLjI2MTQxODI2ODUxNzgxNSwgLTIuOTE1ODcwMTY3OTY0ODJdLCBbNDMuMjYwMDM3NTc0NDE3MDcsIC0yLjkxNzAxODUzNjcxNzEzMzVdLCBbNDMuMjU3NzU5NjIyMDMyMDgsIC0yLjkxNjgzNDYzOTMxNTgxMzhdLCBbNDMuMjU3MjU1MzU2ODE4ODksIC0yLjkxMzYxMzk4MDAzNTQzODRdLCBbNDMuMjU1OTgzNzc2MzU4Mzg0LCAtMi45MTMwOTgyNzY1NDY2ODk3XSwgWzQzLjI1NDY1NjQyOTgyMzg1LCAtMi45MTQ5NTM1OTIwOTA4NzNdLCBbNDMuMjU0NjIxMDI5ODU4NzU0LCAtMi45MTY5MTMwNDQ3NDI3NDE2XSwgWzQzLjI1MzEyMDUxMzU1ODkwNSwgLTIuOTE1NjE3ODU2ODE5MTIzOF0sIFs0My4yNTE3MTkyNjA2NTA3NiwgLTIuOTE0NjQxOTY4MjMxNjc2XSwgWzQzLjI0OTAzODIyNzgzNDUzLCAtMi45MTM1NTk3OTc5OTg1NjgzXSwgWzQzLjI0Njc4MTk5MjgzMjIyLCAtMi45MTE3NTE5NTY0MjI3NDhdLCBbNDMuMjQ0MjE5MDM1ODk2MjE1LCAtMi45MTc0MjEyMjczNTIwMjQ0XSwgWzQzLjI0NjUwNDA0ODU5Nzc5LCAtMi45MDkyODc2NjYyNzg1MDddLCBbNDMuMjQxNDc3ODYwODA2ODEsIC0yLjkyMTI3MDQ1MjUyMDgzNDRdLCBbNDMuMjQxOTY0MTgwNzA1NTE2LCAtMi45MjM2MzQ0NDg1Mzc5NzE1XSwgWzQzLjI0MzEyODU1MjU4OTk1LCAtMi45MjQ5MDc2NTYwNzM0MzhdLCBbNDMuMjQ0ODQxNzY1NjQ0MTcsIC0yLjkyNDk0MTk2NzMxMjMwMjddLCBbNDMuMjQyNDQ5NzE2MTk1NjIsIC0yLjkyNTU5NTc2NTIwMjA3MzddLCBbNDMuMjQxMjM0NTUxOTEyMzIsIC0yLjkyMzUxNzg0NzMyNjUxNzhdLCBbNDMuMjQwOTc3MzUxNTI5Mjk1LCAtMi45MjE0NjQzMDE0OTg4NzQ2XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2IzYjNiMyIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2IzYjNiMyIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2E5ZDAxZGFkMTAyZjQ2ZWNhMzQ1OTY1ZDIxY2VlOGIwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83NTRkYzU3MzhhMDM0ZjgyODZhZmMwZjFiZmVhMjU1OCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOWJhY2FjZmU2MTI2NDllMmJmOWE3OWI0NDgwNWQwNjggPSAkKGA8ZGl2IGlkPSJodG1sXzliYWNhY2ZlNjEyNjQ5ZTJiZjlhNzliNDQ4MDVkMDY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIxNDwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wOTI8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFBsYXphIEJpcmliaWxhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNTg3NTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83NTRkYzU3MzhhMDM0ZjgyODZhZmMwZjFiZmVhMjU1OC5zZXRDb250ZW50KGh0bWxfOWJhY2FjZmU2MTI2NDllMmJmOWE3OWI0NDgwNWQwNjgpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYWJkODEwMjgwZmEwNGQ4YTk5NGJjMTJlODZjNmYzMTcuYmluZFBvcHVwKHBvcHVwXzc1NGRjNTczOGEwMzRmODI4NmFmYzBmMWJmZWEyNTU4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF81MDUyNGI3YWE0MTA0MTU0OTQ0YmYyY2U5NDcxNTdkMCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMmViMDA2MTE3ODNlNDY1OWJiYzE3NDkwMTY4NWJmNWUgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjAzMjkxNDQ2Nzg0NjUsIC0yLjkwNDc0NzE0MjMxMjczMl0sIFs0My4yNTg0NDA4MDU0OTIwNjQsIC0yLjkwMjcyMjg5MjQ3NTE3N10sIFs0My4yNTkzMjg4OTc4MzMyMiwgLTIuOTAwMjc5MzI3MTcxNzMyNl0sIFs0My4yNTczNzg5NTM2OTg4NiwgLTIuODk5MTkxMTg4NjExMzkwNl0sIFs0My4yNTU1Njk5NTcxOTY0LCAtMi45MDA3NzU1NjU3MTRdLCBbNDMuMjUzMDI2ODQ1NDY0NTc1LCAtMi45MDIyMTE4NzYxNjUyMTldLCBbNDMuMjUwMzM2NDEwMTcwNzQ2LCAtMi45MDM2NzE5MzE3NDkyOTA3XSwgWzQzLjI0OTU1NjIyNTk1MDgxLCAtMi45MDg0MDE2MDAwMTYwNzhdLCBbNDMuMjUxNjU4NzQ5Njc1NzIsIC0yLjkxMDU4ODI5MjA0OTU2OTZdLCBbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM2NmMyYTUiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM2NmMyYTUiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF81MDUyNGI3YWE0MTA0MTU0OTQ0YmYyY2U5NDcxNTdkMCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYjIzMTYwYTcwYWQwNGNhMTliNzVjNGM0MTk2N2MxZjYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzEyZTc5NTA5ZjZlNDQyZjI4MDRjZmRiMGQxMjAyNjJiID0gJChgPGRpdiBpZD0iaHRtbF8xMmU3OTUwOWY2ZTQ0MmYyODA0Y2ZkYjBkMTIwMjYyYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTU8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDIzPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBTYW50dXR4dTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTYyODk8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYjIzMTYwYTcwYWQwNGNhMTliNzVjNGM0MTk2N2MxZjYuc2V0Q29udGVudChodG1sXzEyZTc5NTA5ZjZlNDQyZjI4MDRjZmRiMGQxMjAyNjJiKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzJlYjAwNjExNzgzZTQ2NTliYmMxNzQ5MDE2ODViZjVlLmJpbmRQb3B1cChwb3B1cF9iMjMxNjBhNzBhZDA0Y2ExOWI3NWM0YzQxOTY3YzFmNikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfNzNhZWZhM2Q2ZDc3NGQ3YTg0ZWI3ZDVkOTkwNjYxMzggPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2Y0MmZhNjFlNjM2YTRhMDFiYTFkYjQyZjdmODA3NmVmID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjU0NDU0NjIzMjMzMDksIC0yLjkxMDc1MzUzNzIxMjk3NV0sIFs0My4yNTQ5MTE4MjgxMzg4LCAtMi45MDcyMDg0MjI4MDkyNjY1XSwgWzQzLjI1NjEyMDkwOTAwNjExLCAtMi45MDQ0MTMzNTgzNjY5OTM4XSwgWzQzLjI1NTUxMDAyNzQ0Mzk2LCAtMi45MDA2NDA3NTc1NDY2NTZdLCBbNDMuMjU3MzMxNzcwODg5OCwgLTIuODk5MDY0NTc3OTQ5NTQ5Nl0sIFs0My4yNTk2OTU3ODExMzIzNjUsIC0yLjkwMDQ3MTcwOTIxMjI0NDVdLCBbNDMuMjYxMzQ4ODI4Mzc0MTQ2LCAtMi45MDAzNzU3NTExMjk5NF0sIFs0My4yNjA2MDYzMzU0MjQwNywgLTIuOTAxMjQ1MTE0MjQwNjQ5XSwgWzQzLjI2MDM2NzMwNjQyNDEzLCAtMi45MDMzMDQ2NzI4ODM5MTNdLCBbNDMuMjYxNTIyMzg1MTkyNDY0LCAtMi45MDQ4MjU0NTA4MDE1MTU0XSwgWzQzLjI2MDMyOTE0NDY3ODQ2NSwgLTIuOTA0NzQ3MTQyMzEyNzMyXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZjOGQ2MiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZjOGQ2MiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzczYWVmYTNkNmQ3NzRkN2E4NGViN2Q1ZDk5MDY2MTM4KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82MTc2ODYzZTRhYzE0YWZjYjg2ZjY0ZDQxNmQxYmYyOSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDM5ZmQ1ODE2YzAwNGJiMWFlYTMwM2ZhZTFhYTAzMWQgPSAkKGA8ZGl2IGlkPSJodG1sXzQzOWZkNTgxNmMwMDRiYjFhZWEzMDNmYWUxYWEwMzFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIxNjwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMjk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFNhbnR1dHh1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjQxNjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82MTc2ODYzZTRhYzE0YWZjYjg2ZjY0ZDQxNmQxYmYyOS5zZXRDb250ZW50KGh0bWxfNDM5ZmQ1ODE2YzAwNGJiMWFlYTMwM2ZhZTFhYTAzMWQpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfZjQyZmE2MWU2MzZhNGEwMWJhMWRiNDJmN2Y4MDc2ZWYuYmluZFBvcHVwKHBvcHVwXzYxNzY4NjNlNGFjMTRhZmNiODZmNjRkNDE2ZDFiZjI5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF85NjU3NzBkNjNlNjA0MGNiODc0NzU1MDFjZTZkNjNmMCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZGYyYWZjNjIxNTU3NDAxOTg4NjMwY2EwNjc3NGEwZWQgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTE2NTg3NDk2NzU3MiwgLTIuOTEwNTg4MjkyMDQ5NTY5Nl0sIFs0My4yNTQ5ODk3ODA3OTExNTYsIC0yLjkxMTkzNDM0NzczMDkwMzZdLCBbNDMuMjU3NTEyNjY0MDI5MDY1LCAtMi45MTM0MDUzMjM4MTQ1NzZdLCBbNDMuMjU3ODM4OTA5NjIzNDIsIC0yLjkxNjc4MjMxNTkzNjA3NzddLCBbNDMuMjYwMzA2MzA3NjY1MiwgLTIuOTE2NjY4NTUyMzUwMzE3XSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2NTUxMzY0MzEwODQ2LCAtMi45MTY2ODMxMDkwNzgxNjhdLCBbNDMuMjY3ODMwMzcwMzg5NTc1LCAtMi45MTg0MzQ4NTAxODE5OTE0XSwgWzQzLjI2OTgzMTM3MTQ4NDkyNiwgLTIuOTIyNTcyODQ1NTE3NTA3N10sIFs0My4yNzAwODM4OTQ3OTAyMDQsIC0yLjkyNjAwMzU2MjEyMjg3MzNdLCBbNDMuMjY2MDg0OTA3NjE1OTIsIC0yLjkzMzcwNTgzNDYwNzY2NjNdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTc3MTg2NDA0NDI0LCAtMi45NDI3MzgwMDIzMjY5OTQ1XSwgWzQzLjI1ODAwMDE5Mjc4OTYsIC0yLjk0OTA1MjUyOTEyOTYyMTVdLCBbNDMuMjYwMTAxMTU2ODc4MTgsIC0yLjk1Mjk3MTQ5Mzc1NTIwOTRdLCBbNDMuMjU4NDY1MTYzNjMwMTQsIC0yLjk1MTkyMjgzNDk4NjgxNjddLCBbNDMuMjU1ODc4Njg5MzQ1MjcsIC0yLjk1Mzg5NjgzODEyNzMwMTZdLCBbNDMuMjU4MDM5NDUwNjAxMzk1LCAtMi45NTQxNTI3MjY5MjA1MjNdLCBbNDMuMjU4NDA3MTA1NDcyMjMsIC0yLjk1NTgzOTU2OTc1Njc3Nl0sIFs0My4yNTcwMjEyNTE2NjkxMSwgLTIuOTU1MTM0OTg3NDkyMzIyXV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzhkYTBjYiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzhkYTBjYiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzk2NTc3MGQ2M2U2MDQwY2I4NzQ3NTUwMWNlNmQ2M2YwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82M2JjNTg1Yjc4NmU0MTliOGY0ODY3Yjc5YTg1MzgxZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOGVmOWRiMTU0MmNlNGFlOTg1ZWQ5ZDlmOTlmYjBjMjEgPSAkKGA8ZGl2IGlkPSJodG1sXzhlZjlkYjE1NDJjZTRhZTk4NWVkOWQ5Zjk5ZmIwYzIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIxNzwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMzE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IExlemVhZ2E8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0MDY3PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzYzYmM1ODViNzg2ZTQxOWI4ZjQ4NjdiNzlhODUzODFmLnNldENvbnRlbnQoaHRtbF84ZWY5ZGIxNTQyY2U0YWU5ODVlZDlkOWY5OWZiMGMyMSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9kZjJhZmM2MjE1NTc0MDE5ODg2MzBjYTA2Nzc0YTBlZC5iaW5kUG9wdXAocG9wdXBfNjNiYzU4NWI3ODZlNDE5YjhmNDg2N2I3OWE4NTM4MWYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2NlNjAzYTc0NmQ3YTQwOWNiYTZhMWI5YThmNDg2ZDAzID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9iMzdhMTA4M2YwNzI0OTIzODMwMmY0Y2FlODRlZmI0MCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI1NzAyMTI1MTY2OTExLCAtMi45NTUxMzQ5ODc0OTIzMjJdLCBbNDMuMjU4MzU3ODU4MjYyOTEsIC0yLjk1NTc1NzA2MTA5MjcwNzVdLCBbNDMuMjU3NzcxOTA2MzQ3MDEsIC0yLjk1NDA0MzUxMTUwMzQwMzZdLCBbNDMuMjU1ODMwNjEzNzQ5NDk1LCAtMi45NTM4MzkyODExMzgwNjQzXSwgWzQzLjI1ODYyNjY4NzY5OTEwNiwgLTIuOTUxOTM2ODAyNTMzMzYzN10sIFs0My4yNTk0NjAwNDMzMDAxNSwgLTIuOTUyMjY5MTkzMzg1ODUzNF0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5M10sIFs0My4yNTc1ODc1Mzc3MDQxMDQsIC0yLjk0MjUyMzg1ODY3ODQzNV0sIFs0My4yNTg2MDM4NTgwMjkwMywgLTIuOTQxMjUyMTYyMTAzMTQ1Nl0sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzE2OTEyMzc4MDI4LCAtMi45MzYwNTIwMTI1MDU5Mzg2XSwgWzQzLjI2MzYyOTYzMTgzOTAzLCAtMi45MzQ1ODY4OTAxNjEyMzldLCBbNDMuMjY2NjkxMjk5MTA1NjIsIC0yLjkzMzMzOTk3MzkzMDE2ODddLCBbNDMuMjY5NjY4NjEzMzgzNzMsIC0yLjkyMjQ3OTIxNDQ3ODM3NjRdLCBbNDMuMjY3NjQxNDEwMjQ3MDYsIC0yLjkxODQyNjYyNDc1MTk5Ml0sIFs0My4yNjU1MzA4MjE4MTc2NTYsIC0yLjkxNjg3ODA2NzMyMDYyOF0sIFs0My4yNjE0MTgyNjg1MTc4MTUsIC0yLjkxNTg3MDE2Nzk2NDgyXSwgWzQzLjI2MDAzNzU3NDQxNzA3LCAtMi45MTcwMTg1MzY3MTcxMzM1XSwgWzQzLjI1Nzc1OTYyMjAzMjA4LCAtMi45MTY4MzQ2MzkzMTU4MTM4XSwgWzQzLjI1NzI1NTM1NjgxODg5LCAtMi45MTM2MTM5ODAwMzU0Mzg0XSwgWzQzLjI1NTk4Mzc3NjM1ODM4NCwgLTIuOTEzMDk4Mjc2NTQ2Njg5N10sIFs0My4yNTQ2NTY0Mjk4MjM4NSwgLTIuOTE0OTUzNTkyMDkwODczXSwgWzQzLjI1NDYyMTAyOTg1ODc1NCwgLTIuOTE2OTEzMDQ0NzQyNzQxNl0sIFs0My4yNTMxMjA1MTM1NTg5MDUsIC0yLjkxNTYxNzg1NjgxOTEyMzhdLCBbNDMuMjUxNzE5MjYwNjUwNzYsIC0yLjkxNDY0MTk2ODIzMTY3Nl0sIFs0My4yNTE2NTg3NDk2NzU3MiwgLTIuOTEwNTg4MjkyMDQ5NTY5Nl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNzhhYzMiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNzhhYzMiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZTYwM2E3NDZkN2E0MDljYmE2YTFiOWE4ZjQ4NmQwMyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYjQ5NDM4YjAxOTliNGM3NjkyOGQ4OTc3M2E0ZGUyMGEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2JlYzg2OTkyYzEyNDRjNDE4Yzc1ZTNkODYxY2JiYTAyID0gJChgPGRpdiBpZD0iaHRtbF9iZWM4Njk5MmMxMjQ0YzQxOGM3NWUzZDg2MWNiYmEwMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMTg8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTE4PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBMZXplYWdhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNDE3ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9iNDk0MzhiMDE5OWI0Yzc2OTI4ZDg5NzczYTRkZTIwYS5zZXRDb250ZW50KGh0bWxfYmVjODY5OTJjMTI0NGM0MThjNzVlM2Q4NjFjYmJhMDIpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfYjM3YTEwODNmMDcyNDkyMzgzMDJmNGNhZTg0ZWZiNDAuYmluZFBvcHVwKHBvcHVwX2I0OTQzOGIwMTk5YjRjNzY5MjhkODk3NzNhNGRlMjBhKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF85NTMyMmE5NTQ0YjY0NmE4OTBlOGQ2MzIyNzUyNWIyNiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfZThiZGYwMTczYWY3NDI2YTk4MzIxYzFhOTMyNDQ2NzggPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yMjcxMzQ4NzEzMjM0NSwgLTIuOTE2ODMzODY1MTY4MjQxXSwgWzQzLjIyNjM3MDk4ODI1NDUxLCAtMi45MTM5NTI0ODI4MDUyMDQ0XSwgWzQzLjIzMjc4MzM2MTYwNzI4LCAtMi45MTQ0NjY5NzI2MDA4OTQ1XSwgWzQzLjIzOTQzOTU4NzY0MzU3LCAtMi45MTgxMzMwNjM4NjY5MjY1XSwgWzQzLjI0MTQ3Nzg2MDgwNjgxLCAtMi45MjEyNzA0NTI1MjA4MzQ0XSwgWzQzLjI0MTk2NDE4MDcwNTUxNiwgLTIuOTIzNjM0NDQ4NTM3OTcxNV0sIFs0My4yNDI0NDk3MTYxOTU2MiwgLTIuOTI1NTk1NzY1MjAyMDczN10sIFs0My4yNDEyMzQ1NTE5MTIzMiwgLTIuOTIzNTE3ODQ3MzI2NTE3OF0sIFs0My4yNDA5NzczNTE1MjkyOTUsIC0yLjkyMTQ2NDMwMTQ5ODg3NDZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYTZkODU0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYTZkODU0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfOTUzMjJhOTU0NGI2NDZhODkwZThkNjMyMjc1MjViMjYpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzczMDliMzgyYTIwNTQzODVhNzhjNzI0M2JmOTZmYmEzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80YmI2NDdjNGFmZjM0MWJjOWIxNDMwYWRlYTQ2NmMzNCA9ICQoYDxkaXYgaWQ9Imh0bWxfNGJiNjQ3YzRhZmYzNDFiYzliMTQzMGFkZWE0NjZjMzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjE5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzAzOTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTGEgUGXDsWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA3ODQyPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzczMDliMzgyYTIwNTQzODVhNzhjNzI0M2JmOTZmYmEzLnNldENvbnRlbnQoaHRtbF80YmI2NDdjNGFmZjM0MWJjOWIxNDMwYWRlYTQ2NmMzNCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9lOGJkZjAxNzNhZjc0MjZhOTgzMjFjMWE5MzI0NDY3OC5iaW5kUG9wdXAocG9wdXBfNzMwOWIzODJhMjA1NDM4NWE3OGM3MjQzYmY5NmZiYTMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2VkMjJkZmUyYzYzODQ0ZWFhZGM2ZmE3YjcwN2M5YzZkID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9hMmYyM2I1N2I1NWM0YjAwYTBhN2M4MjZjNWU2ZjY0ZCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0MDk3NzM1MTUyOTI5NSwgLTIuOTIxNDY0MzAxNDk4ODc0Nl0sIFs0My4yMzk0Mzk1ODc2NDM1NywgLTIuOTE4MTMzMDYzODY2OTI2NV0sIFs0My4yMzI2NDkyNDA5MTQ2NzUsIC0yLjkxNDUzMzgxMzU2MjY0MTddLCBbNDMuMjI2NDE3NjEzNTIyMjE2LCAtMi45MTM5MTEzNjcyNzAyNzY2XSwgWzQzLjIyNzEzNDg3MTMyMzQ1LCAtMi45MTY4MzM4NjUxNjgyNDFdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmZkOTJmIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmZkOTJmIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWQyMmRmZTJjNjM4NDRlYWFkYzZmYTdiNzA3YzljNmQpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2RjYWExYzAxMDE1ZjQ1MmZiZjRhNDY2ZDYyYzgwNzMwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8zMTliMDI0YmY5MGM0ODMyOWJhMzAwZmQ1NWQ5ZGVhYyA9ICQoYDxkaXYgaWQ9Imh0bWxfMzE5YjAyNGJmOTBjNDgzMjliYTMwMGZkNTVkOWRlYWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjIwPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA0MzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTGEgUGXDsWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA3OTYzPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2RjYWExYzAxMDE1ZjQ1MmZiZjRhNDY2ZDYyYzgwNzMwLnNldENvbnRlbnQoaHRtbF8zMTliMDI0YmY5MGM0ODMyOWJhMzAwZmQ1NWQ5ZGVhYyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9hMmYyM2I1N2I1NWM0YjAwYTBhN2M4MjZjNWU2ZjY0ZC5iaW5kUG9wdXAocG9wdXBfZGNhYTFjMDEwMTVmNDUyZmJmNGE0NjZkNjJjODA3MzApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzFmOWUzYjkzYjllOTQyZGU4Y2EyNjQzZmE1NDljMGM1ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV83NzEyODRlZDJiYWE0M2Q0YWM3ZGZlMDIwZTYyNGI3OSA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2NDkyNjE2NTM0MTMzNiwgLTIuOTQ0MDU5OTcwOTQyMjkwOF0sIFs0My4yNjQxNDc0NjkxODg3ODUsIC0yLjk0MDUxOTU0MDQ4MTQ2N10sIFs0My4yNjMzNDgwMTE1NDI3NCwgLTIuOTM2ODY5MjcxMDMwMjYzN10sIFs0My4yNjI2OTA3NjE5NzcwMywgLTIuOTMzNzUwOTk2NDMxNTU5XSwgWzQzLjI2MTUyOTk0NjQwMDE3NCwgLTIuOTI4NDc2NTgwODg0NjUxM10sIFs0My4yNTk1NjI0NjM3MTkxNSwgLTIuOTI0MDM3ODgxMTk4MDEwM10sIFs0My4yNTcwOTAzNDI1MzMwNzUsIC0yLjkyNzEyOTI5NTA3NzkyMzddLCBbNDMuMjU0NzczMDc3NzUxNTIsIC0yLjkyNjc0Mzg5NDM0MzA3NDRdLCBbNDMuMjU0MDg4NDc5NDI0MTA1LCAtMi45MjUwODAzNjg4NDA4NzA2XSwgWzQzLjI1MzcyODkzMTM2NTM0NSwgLTIuOTIzMDc5MTU5OTg4NjU2NV0sIFs0My4yNTIzNDM0MDMwNTMzMywgLTIuOTIzMDc5Mzg4NTUwNzk0XSwgWzQzLjI1MTAzNDU1MTYxOTQ3LCAtMi45MjI4ODk4MDAzNzI0NTE1XSwgWzQzLjI0OTUzMjkzODk2ODM4LCAtMi45MjE4NDQyMzIwNjM2Nzg2XSwgWzQzLjI0NTcxOTk5NjczMzg1NCwgLTIuOTIyNTI5NDM3NjMyNjA2NV0sIFs0My4yNDQ4NDE3NjU2NDQxNywgLTIuOTI0OTQxOTY3MzEyMzAyN10sIFs0My4yNDI0NDk3MTYxOTU2MiwgLTIuOTI1NTk1NzY1MjAyMDczN10sIFs0My4yNDEyMzQ1NTE5MTIzMiwgLTIuOTIzNTE3ODQ3MzI2NTE3OF0sIFs0My4yNDA5NzczNTE1MjkyOTUsIC0yLjkyMTQ2NDMwMTQ5ODg3NDZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTVjNDk0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTVjNDk0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWY5ZTNiOTNiOWU5NDJkZThjYTI2NDNmYTU0OWMwYzUpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2U2OTczNzg2MmNmNDRmZTU4YWQ5NzMyNGM2YjgwNjkxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81YjE1ZWQ0YTdlN2I0MjE2YTU2M2VjMDQ0N2RlMmJjZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNWIxNWVkNGE3ZTdiNDIxNmE1NjNlYzA0NDdkZTJiY2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjIxPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzEwMzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gSmVzdXNlbiBCaWhvdHphPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDY0MzwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lNjk3Mzc4NjJjZjQ0ZmU1OGFkOTczMjRjNmI4MDY5MS5zZXRDb250ZW50KGh0bWxfNWIxNWVkNGE3ZTdiNDIxNmE1NjNlYzA0NDdkZTJiY2YpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNzcxMjg0ZWQyYmFhNDNkNGFjN2RmZTAyMGU2MjRiNzkuYmluZFBvcHVwKHBvcHVwX2U2OTczNzg2MmNmNDRmZTU4YWQ5NzMyNGM2YjgwNjkxKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9mM2FlYWVhNzMyODU0ZGQ1YTE2YTRhN2Y3N2I1ZmI0MCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfODcxZDEzYzZhNzNiNGNhOWI2ZTM4MWE1MGVhN2Y0YjAgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDA5NzczNTE1MjkyOTUsIC0yLjkyMTQ2NDMwMTQ5ODg3NDZdLCBbNDMuMjQxNDc3ODYwODA2ODEsIC0yLjkyMTI3MDQ1MjUyMDgzNDRdLCBbNDMuMjQxOTY0MTgwNzA1NTE2LCAtMi45MjM2MzQ0NDg1Mzc5NzE1XSwgWzQzLjI0MzEyODU1MjU4OTk1LCAtMi45MjQ5MDc2NTYwNzM0MzhdLCBbNDMuMjQ0ODcxODkyMDExODcsIC0yLjkyNDI4MzA3NTAxMjY3NV0sIFs0My4yNDYxMDA1MTM4OTA3NSwgLTIuOTIxNzEzNzM3Nzg2ODA0XSwgWzQzLjI0OTAyMjM3MjYxNzU5NiwgLTIuOTIxNDQyMjM1MTY0NjU2NV0sIFs0My4yNTIwMDUyODE0NDM3OCwgLTIuOTIyNzk0OTU0MTY0MzU3NF0sIFs0My4yNTQwMjYwODY0NTY0NiwgLTIuOTIzMTczNDMyODk2NDA2NV0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjE3MzI1ODgyNjEyOCwgLTIuOTI4OTY3MDQxMzg1NjQ4M10sIFs0My4yNjI3MDk4NjczOTA5NywgLTIuOTMzNDU3MjM4NzAyMTU3NF0sIFs0My4yNjMyODk3MjUzMzk1NSwgLTIuOTM1OTg3Mjc0MzQ3MzgzNF0sIFs0My4yNjQyMTM1ODUxMzQ5MywgLTIuOTQwMTk4OTQ2ODMyNDY0NV0sIFs0My4yNjQ5MjYxNjUzNDEzMzYsIC0yLjk0NDA1OTk3MDk0MjI5MDhdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYjNiM2IzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYjNiM2IzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjNhZWFlYTczMjg1NGRkNWExNmE0YTdmNzdiNWZiNDApOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzQ1NjM3NDA3ZDUxMTQ1MTc4YWYyNDMyOWVkOWFhZjVlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84YWMxM2ZkNDhhZWQ0ZmFiYWE4Mzg1MzlkZjBhMmQxMiA9ICQoYDxkaXYgaWQ9Imh0bWxfOGFjMTNmZDQ4YWVkNGZhYmFhODM4NTM5ZGYwYTJkMTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjIyPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA0MTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gSmVzdXNlbiBCaWhvdHphPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDg2OTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80NTYzNzQwN2Q1MTE0NTE3OGFmMjQzMjllZDlhYWY1ZS5zZXRDb250ZW50KGh0bWxfOGFjMTNmZDQ4YWVkNGZhYmFhODM4NTM5ZGYwYTJkMTIpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfODcxZDEzYzZhNzNiNGNhOWI2ZTM4MWE1MGVhN2Y0YjAuYmluZFBvcHVwKHBvcHVwXzQ1NjM3NDA3ZDUxMTQ1MTc4YWYyNDMyOWVkOWFhZjVlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9iMjg5M2VjZWFkNDI0YzRiYWQyNjQzNmQ5ZmFjNjY3NyA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNDUzYTg4N2I1ZWNmNGI1Njk1MDBkMzY2ZGU5ZGUxYTUgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjAxMDExNTY4NzgxOCwgLTIuOTUyOTcxNDkzNzU1MjA5NF0sIFs0My4yNTc5NDQ4NTg2MzgwNywgLTIuOTQ5MDU1NDY4Njc2Mjg5M10sIFs0My4yNTc0NzUwOTIyNzMzNSwgLTIuOTQ2MDc0MjY0Njc0MjEzXSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1MjUyNzcxMjAzODIxLCAtMi45NDUwNzQyMDE2MjcwMDddLCBbNDMuMjU0MzMwODMwMzM3NCwgLTIuOTQ0NTk0Mzk5OTQxNzU4M10sIFs0My4yNTQwMzI3Nzk3NzczMDUsIC0yLjk0MjU3ODc4MzY1NzE3MTddLCBbNDMuMjUyMDE5NDU4MDg3Mzk2LCAtMi45Mzg3MjU5MDk5MDY1NTJdLCBbNDMuMjUwODE0NDg1NDM1OTYsIC0yLjkzNTc0NjM2NTE1MTA4OF0sIFs0My4yNDk2Mzk4OTk4MjIwNywgLTIuOTMzNzYxODU0NzQ5MTc5XSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNl0sIFs0My4yNDc2NjAyNDU2NTU4NDQsIC0yLjkzMTYxOTEzMzExNTE1N10sIFs0My4yNDY4OTA4ODgzNzI3NzUsIC0yLjkyOTc1NDUxMzkxNzgzODVdLCBbNDMuMjQ4NzUyNTM2NTc5NDcsIC0yLjkyODA1ODQzMTUwOTkxOF0sIFs0My4yNDk0MTc2MTAyNzA4OCwgLTIuOTI2ODk4ODk3MDU1MzEwNV0sIFs0My4yNTEyMTY4MzUyMzc3MDYsIC0yLjkyOTI2MzUzNzkwMDUxNTRdLCBbNDMuMjUyMzQ4MzYwNDI2NjQsIC0yLjkzMDc1OTE4OTMzNzA1MzNdLCBbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2IyODkzZWNlYWQ0MjRjNGJhZDI2NDM2ZDlmYWM2Njc3KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jODkyNTk0NDQyOTA0ZjYyYjMwOTdhMTM3NDQ2MmM1MSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYzc4M2M4MWIwZWFhNGExNGFmNjdjNzM5MDQzNDhiZTAgPSAkKGA8ZGl2IGlkPSJodG1sX2M3ODNjODFiMGVhYTRhMTRhZjY3YzczOTA0MzQ4YmUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIyMzwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMTU8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IE9zcGl0YWxlYTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MDc0Njk8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYzg5MjU5NDQ0MjkwNGY2MmIzMDk3YTEzNzQ0NjJjNTEuc2V0Q29udGVudChodG1sX2M3ODNjODFiMGVhYTRhMTRhZjY3YzczOTA0MzQ4YmUwKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzQ1M2E4ODdiNWVjZjRiNTY5NTAwZDM2NmRlOWRlMWE1LmJpbmRQb3B1cChwb3B1cF9jODkyNTk0NDQyOTA0ZjYyYjMwOTdhMTM3NDQ2MmM1MSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfMTcwNDliZWM3ZmUzNGExNWI4Njk4ODA4MDY4NGQwMDMgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzQxZWIwOGJiNzlkODQ1ODBhODcxNjJiNDBhMDZjZGY0ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjUyNzg2MjQwNjg5NTQ1LCAtMi45MzI1NTcwMDQ5NjE4OTY4XSwgWzQzLjI1MDUzMTEzMzU2ODU2NSwgLTIuOTI5OTA1MDQ0Nzk5ODQ5NF0sIFs0My4yNDkzNTQ4NTU0ODQxMzUsIC0yLjkyNzkwNzUzNDA0MTAzNjVdLCBbNDMuMjQ4NTQ2MTQzMTQ5NiwgLTIuOTI5OTU0MDg5Mzk3MTgxNl0sIFs0My4yNDkzNjgwODk2NzM3MTYsIC0yLjkzMTU1MzM4NjEwNjk4NTZdLCBbNDMuMjUwNjMxMDc2MjU2NTA0LCAtMi45MzM2NzY1NjYzNjEyNzJdLCBbNDMuMjUxNDc1OTc2MDIxODIsIC0yLjkzNTczNzAwODU3MDEwODddLCBbNDMuMjUzMjczMjQ1NDcwMjQsIC0yLjkzNzU1NzQzNTg4NzAxNjJdLCBbNDMuMjUyMDE2MTI4NDU1ODYsIC0yLjkzNzYxNjQ2MDI4NjU5NF0sIFs0My4yNTI4MDI3MzgwODY1NSwgLTIuOTQzMTc4MjExNTU1OTQyNl0sIFs0My4yNTQzNjQwMTI5NTkwNSwgLTIuOTQ0NzE4NTAxNTg4MTExNF0sIFs0My4yNTI4ODk1MzU3NDM5NTQsIC0yLjk0NjQ3OTgwNDIwMzU0NjVdLCBbNDMuMjU2MjI3OTQzOTQzNTY0LCAtMi45NDY0NTM4NzgwODA1NjhdLCBbNDMuMjU4MDAwMTkyNzg5NiwgLTIuOTQ5MDUyNTI5MTI5NjIxNV0sIFs0My4yNjAxMDExNTY4NzgxOCwgLTIuOTUyOTcxNDkzNzU1MjA5NF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNmYzhkNjIiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNmYzhkNjIiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xNzA0OWJlYzdmZTM0YTE1Yjg2OTg4MDgwNjg0ZDAwMyk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzM3ZjdlNTJjZWYzNDJhMTk0MmFhYzBhZmIyZjI2NTggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzM3ZTAyMjkyZmQ4OTQ2MDFiN2YyNTM1YjRjZDQ0NTRkID0gJChgPGRpdiBpZD0iaHRtbF8zN2UwMjI5MmZkODk0NjAxYjdmMjUzNWI0Y2Q0NDU0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMjQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDQ1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBPc3BpdGFsZWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA3NTI5PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzMzN2Y3ZTUyY2VmMzQyYTE5NDJhYWMwYWZiMmYyNjU4LnNldENvbnRlbnQoaHRtbF8zN2UwMjI5MmZkODk0NjAxYjdmMjUzNWI0Y2Q0NDU0ZCk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV80MWViMDhiYjc5ZDg0NTgwYTg3MTYyYjQwYTA2Y2RmNC5iaW5kUG9wdXAocG9wdXBfMzM3ZjdlNTJjZWYzNDJhMTk0MmFhYzBhZmIyZjI2NTgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzUzOWQ4YmY4MzNkZTRhNzQ4NGEzOGRlMTM3NTU1ZDI5ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9jOGY4OWNhMGQ2OWI0NzVjYTc0MmJjNmViMDFiMzNlZCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI1MzUwNDgxNzcyNDUwNSwgLTIuOTUzMDUzNzgxNDE2Njg2Nl0sIFs0My4yNTI2NjA5MjU5MjU3NywgLTIuOTU1MzQ5MTk5MzEwNzc4Nl0sIFs0My4yNTM2NjcxODMzNjksIC0yLjk1NjYwOTkxOTIxNjA2NThdLCBbNDMuMjUzODUxMDE5MzYwMjA1LCAtMi45NTkzMTcyMTQ5NDkyODVdLCBbNDMuMjU1Nzk3MTUyMzQxMzE2LCAtMi45NTk2NjM4ODEzNTY2NTQ3XSwgWzQzLjI1Njk3MTU5OTc1NDk5LCAtMi45NjAyNzk4NjkxMjIxNDM1XSwgWzQzLjI1ODY1NzMzNTUwMDc5LCAtMi45NjIzNDIzNjYxNDY1NTY3XSwgWzQzLjI2MTcyOTMzNTU3NjcyNSwgLTIuOTY1MDI4NDY0MjY3MDI3N10sIFs0My4yNjQwOTY5MDE4NjcyOCwgLTIuOTY1MzUxNzExNTQwNDI4NF0sIFs0My4yNjc5NTc3MzUyNjI4NiwgLTIuOTY4MzI2OTQxMTMxODc2N10sIFs0My4yNjMzNDk0ODU3Mzg0MiwgLTIuOTYzNDM3OTUzMTA3NzU3XSwgWzQzLjI2MzMwODA1MTgxNzE2LCAtMi45NjI0MDExNDYxMzI3NTRdLCBbNDMuMjYxMTUzODAwOTI1NzIsIC0yLjk1OTUyNjEzMTUwMTk5NjNdLCBbNDMuMjYwNjc1OTc0NDU4NTIsIC0yLjk1NTk0ODE0ODc5MTY5Ml0sIFs0My4yNTg5MzI3NDAwMjAwMywgLTIuOTU2NzU3MDU2NjEyNzQ0M10sIFs0My4yNTgzNTc4NTgyNjI5MSwgLTIuOTU1NzU3MDYxMDkyNzA3NV0sIFs0My4yNTc3NzE5MDYzNDcwMSwgLTIuOTU0MDQzNTExNTAzNDAzNl0sIFs0My4yNTU4MzA2MTM3NDk0OTUsIC0yLjk1MzgzOTI4MTEzODA2NDNdLCBbNDMuMjU4NjI2Njg3Njk5MTA2LCAtMi45NTE5MzY4MDI1MzMzNjM3XSwgWzQzLjI1OTQ2MDA0MzMwMDE1LCAtMi45NTIyNjkxOTMzODU4NTM0XSwgWzQzLjI1Nzk0NDg1ODYzODA3LCAtMi45NDkwNTU0Njg2NzYyODkzXSwgWzQzLjI1NzU4NzUzNzcwNDEwNCwgLTIuOTQyNTIzODU4Njc4NDM1XSwgWzQzLjI1NzMzMjI1NDIwNDYsIC0yLjkzNzYxMDU0ODM5NzE1MV0sIFs0My4yNTcyMjI3NDQ5NTI1MSwgLTIuOTM1MzAzNTI2MTcwNDg4XSwgWzQzLjI1NjAzNTkyMjM4NDgyNSwgLTIuOTMwMjQ4Mzg0OTgyNDkxNF0sIFs0My4yNTUzNTA4MjgwMjMwMywgLTIuOTI4MzQyNDUzNDE2NTY0XSwgWzQzLjI1NDc3MzA3Nzc1MTUyLCAtMi45MjY3NDM4OTQzNDMwNzQ0XSwgWzQzLjI1NDA4ODQ3OTQyNDEwNSwgLTIuOTI1MDgwMzY4ODQwODcwNl0sIFs0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM4ZGEwY2IiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM4ZGEwY2IiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF81MzlkOGJmODMzZGU0YTc0ODRhMzhkZTEzNzU1NWQyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNTI3YjIzMTNlOThmNGM0NmE5NjY1OWM3Y2M3N2Y4NTAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzUwMDg1ODllNDVmNjQ5NWJhMjZiYWMzNTRlNjkzZTMzID0gJChgPGRpdiBpZD0iaHRtbF81MDA4NTg5ZTQ1ZjY0OTViYTI2YmFjMzU0ZTY5M2UzMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMjY8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTE3PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBBdHh1cmk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDEyNzk2PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzUyN2IyMzEzZTk4ZjRjNDZhOTY2NTljN2NjNzdmODUwLnNldENvbnRlbnQoaHRtbF81MDA4NTg5ZTQ1ZjY0OTViYTI2YmFjMzU0ZTY5M2UzMyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV9jOGY4OWNhMGQ2OWI0NzVjYTc0MmJjNmViMDFiMzNlZC5iaW5kUG9wdXAocG9wdXBfNTI3YjIzMTNlOThmNGM0NmE5NjY1OWM3Y2M3N2Y4NTApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2EwZjMzMTc5MzJkMzRlMTNiYjZlNjI4NTNhNzQ0NTA2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV85YTUwOGIwZDZlOWI0NzhmOTk2MTRlNjg5YTgzNGEyOCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MjUyNzkzMTQ3NDQ0LCAtMi45NDczNDI2NTY3NTA2NzZdLCBbNDMuMjY0OTI2MTY1MzQxMzM2LCAtMi45NDQwNTk5NzA5NDIyOTA4XSwgWzQzLjI2NDE0NzQ2OTE4ODc4NSwgLTIuOTQwNTE5NTQwNDgxNDY3XSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3XSwgWzQzLjI2MjY5MDc2MTk3NzAzLCAtMi45MzM3NTA5OTY0MzE1NTldLCBbNDMuMjYxNTI5OTQ2NDAwMTc0LCAtMi45Mjg0NzY1ODA4ODQ2NTEzXSwgWzQzLjI2MDQyMDY5NzY0NjE1NCwgLTIuOTIyNzU1MzgyOTA3ODQ1NF0sIFs0My4yNjQwOTk1MTM1MDAwMiwgLTIuOTIyNTkwMTEyMDcyNTg3N10sIFs0My4yNjQ3NTAzNzM1NDcwNDUsIC0yLjkxODQxMzg4MDAzNTk5ODRdLCBbNDMuMjYxNDE4MjY4NTE3ODE1LCAtMi45MTU4NzAxNjc5NjQ4Ml0sIFs0My4yNjIzOTE0MDAwNzExNDUsIC0yLjkxNTMwNzM1NDM4Mjk0OV0sIFs0My4yNjQ2NjY2MTIzNzA3OSwgLTIuOTEzNjE0ODI0Mjg1OTc3Nl0sIFs0My4yNjQ3NzI3MzM0NDM3MzUsIC0yLjkxMTc5NzgxNjY5NTgzNV0sIFs0My4yNjIyNTMwMzcyMjc3OSwgLTIuOTEzMDczMDM3ODA1MjY1NF0sIFs0My4yNjEyODk5NzA3ODUzMzQsIC0yLjkxMTQ0ODk5MDc2Mjc5MDVdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTc4YWMzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTc4YWMzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTBmMzMxNzkzMmQzNGUxM2JiNmU2Mjg1M2E3NDQ1MDYpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzI4MGE4ZjlkZjhmOTRlYjk5NTIwMDNjYjA4ZWFjM2JmID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81OTcyZmI0MzdjZmE0MjQxYTk4Mzk4MzQ0ZGIwNzA1NyA9ICQoYDxkaXYgaWQ9Imh0bWxfNTk3MmZiNDM3Y2ZhNDI0MWE5ODM5ODM0NGRiMDcwNTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjI3PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzExNDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXJhYmVsbGE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDE0OTM5PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzI4MGE4ZjlkZjhmOTRlYjk5NTIwMDNjYjA4ZWFjM2JmLnNldENvbnRlbnQoaHRtbF81OTcyZmI0MzdjZmE0MjQxYTk4Mzk4MzQ0ZGIwNzA1Nyk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV85YTUwOGIwZDZlOWI0NzhmOTk2MTRlNjg5YTgzNGEyOC5iaW5kUG9wdXAocG9wdXBfMjgwYThmOWRmOGY5NGViOTk1MjAwM2NiMDhlYWMzYmYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzQzMjY4YmJhYzZiNDQ4YjBiYTBkYWM0YWU0YjZiYTI1ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8yNDkzMmQyZjY3MzY0NTU2OWUxMjVhZjU1OGVkMTA0NiA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MTI4OTk3MDc4NTMzNCwgLTIuOTExNDQ4OTkwNzYyNzkwNV0sIFs0My4yNjA2NTgxNDI5NDc1OSwgLTIuOTEyNTk0NjQzMzg4MDg4XSwgWzQzLjI2MTUzMTAwMjA2NTQxLCAtMi45MTUyNzQyNjc1NDQ0NDY3XSwgWzQzLjI2NDkwMDI3Mzg0NTQ2LCAtMi45MTgzMzU3MzIyMDAyNjA4XSwgWzQzLjI2NDk4MjI2MTI4ODc1LCAtMi45MjI0NzY0NzA3NTAyNTk3XSwgWzQzLjI2MzA2MTM2NjU3OTA2NiwgLTIuOTI3NDUyMTEwOTgzMjY1NF0sIFs0My4yNjI2MDIyMzY1MDY1OTUsIC0yLjkyOTI2OTM5NjIzMDU4ODVdLCBbNDMuMjU5Nzk2NDgyNDEyMjg0LCAtMi45MzI1MDgyMTYxMTgyNDFdLCBbNDMuMjYwMjg0MzY5MTk2NDA1LCAtMi45MzcwODMwODY1NDk1MjE3XSwgWzQzLjI2MTM1MzE4NzM0NTExNSwgLTIuOTQxOTk5ODU5ODUyNzg1XSwgWzQzLjI2MjE1MzEwMzkyNTA5NCwgLTIuOTQ1NjQ5MDM3NDYyNDkxN10sIFs0My4yNjI1Mjc5MzE0NzQ0NCwgLTIuOTQ3MzQyNjU2NzUwNjc2XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2E2ZDg1NCIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2E2ZDg1NCIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzQzMjY4YmJhYzZiNDQ4YjBiYTBkYWM0YWU0YjZiYTI1KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zMzRlNWJhMjBjNGQ0NzU1YTc3N2I0NWZhZWMwZmQxYiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOGM3ZTU1ZjI0YmY1NGIwZTkzNWQzMjI2NWZkMjIwNzYgPSAkKGA8ZGl2IGlkPSJodG1sXzhjN2U1NWYyNGJmNTRiMGU5MzVkMzIyNjVmZDIyMDc2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIyODwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMTU8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEFyYWJlbGxhPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNTA4MDwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zMzRlNWJhMjBjNGQ0NzU1YTc3N2I0NWZhZWMwZmQxYi5zZXRDb250ZW50KGh0bWxfOGM3ZTU1ZjI0YmY1NGIwZTkzNWQzMjI2NWZkMjIwNzYpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMjQ5MzJkMmY2NzM2NDU1NjllMTI1YWY1NThlZDEwNDYuYmluZFBvcHVwKHBvcHVwXzMzNGU1YmEyMGM0ZDQ3NTVhNzc3YjQ1ZmFlYzBmZDFiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8xNWU1M2VlNjYwODc0Zjk4YTU1MWYwMGViZjVlN2VhMiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMzc0NDU0OGE5NTBjNDZhMGJhODUyZmE5YjVlZmMyYWQgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdLCBbNDMuMjc5NDA0OTE2MjU2NDUsIC0yLjk2MTczNzkxOTg0MTYyODVdLCBbNDMuMjc3NzA5MjI2MDA4MzUsIC0yLjk2MDc5MjY0NTkwMTI1N10sIFs0My4yNzU4NzIxMjM4MzEwMiwgLTIuOTU5NzY0OTM3ODI4NjEzN10sIFs0My4yNzM3NjkyMjM3MjM0MzQsIC0yLjk1NzU0ODE4OTAzMzQ1NzRdLCBbNDMuMjcyNzEwNDIyMzU5NjUsIC0yLjk1NTQzNTEyMjQzMjUzM10sIFs0My4yNzE5MjU0OTgwMDkwMjYsIC0yLjk1MDA5NjM0NjEwMDM5OTddLCBbNDMuMjcxNzE2NTQ3MDg3NzA2LCAtMi45NDQ5MzU5MjQ2NzYzMzZdLCBbNDMuMjY5NzYxMTg0NzcwMjgsIC0yLjk0MDcxOTkwMDUwNTQzNl0sIFs0My4yNzAxODEyNzk4MDU4OCwgLTIuOTM3Mjc0MDY1MjcxMDA0NV0sIFs0My4yNjk2ODAxMTIwNjY3OTQsIC0yLjkzMTM4MzA2MjgyNTQyNjVdLCBbNDMuMjY2NDM0OTAzODkxMzUsIC0yLjkyNjgyODE1MDA3NTM3M10sIFs0My4yNjQ0OTIxMzE2MDA2MSwgLTIuOTI0NTA2MDc1ODM0MzAzM10sIFs0My4yNjI4NDUxMjExMjIxMDUsIC0yLjkyMzA1OTE0MzM5OTg2MTZdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2XSwgWzQzLjI1NzU5MjkzMDExNjcyLCAtMi45MzM1MzQyOTAwNjA0NDEzXSwgWzQzLjI1Mzg0OTcyMzA1NTc1LCAtMi45MzQwMjc4OTQwNDA1MDA3XSwgWzQzLjI1MTI3OTc5ODM2MzE5LCAtMi45MzQ2OTM2MzYxNjczOTIzXSwgWzQzLjI0OTYzOTg5OTgyMjA3LCAtMi45MzM3NjE4NTQ3NDkxNzldLCBbNDMuMjQ4MzA0Mzc1Nzc0NjE2LCAtMi45MzMyMDU3NzUwMzQ0NTM2XSwgWzQzLjI0NzY2MDI0NTY1NTg0NCwgLTIuOTMxNjE5MTMzMTE1MTU3XSwgWzQzLjI0Njg5MDg4ODM3Mjc3NSwgLTIuOTI5NzU0NTEzOTE3ODM4NV0sIFs0My4yNDg3NTI1MzY1Nzk0NywgLTIuOTI4MDU4NDMxNTA5OTE4XSwgWzQzLjI0OTQxNzYxMDI3MDg4LCAtMi45MjY4OTg4OTcwNTUzMTA1XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZmZDkyZiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZmZDkyZiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzE1ZTUzZWU2NjA4NzRmOThhNTUxZjAwZWJmNWU3ZWEyKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mNzFjYmZjNTg4NzQ0ZGRkODViN2Y1NDJkMmM0Y2RiMiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzNhYThmYzY0Yjk3NGU3M2JkZGY1ZTYwYjYwNzlmNzAgPSAkKGA8ZGl2IGlkPSJodG1sXzczYWE4ZmM2NGI5NzRlNzNiZGRmNWU2MGI2MDc5ZjcwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjIyOTwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMDA8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IFNhbiBJZ25hemlvPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQyNDU1MTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mNzFjYmZjNTg4NzQ0ZGRkODViN2Y1NDJkMmM0Y2RiMi5zZXRDb250ZW50KGh0bWxfNzNhYThmYzY0Yjk3NGU3M2JkZGY1ZTYwYjYwNzlmNzApOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMzc0NDU0OGE5NTBjNDZhMGJhODUyZmE5YjVlZmMyYWQuYmluZFBvcHVwKHBvcHVwX2Y3MWNiZmM1ODg3NDRkZGQ4NWI3ZjU0MmQyYzRjZGIyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8yYWYyZjI0ZDUyN2Q0MzdiOGFmNGJhMWU0Yjg4YTY0YSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfNmJlYjM2MmI0Nzk5NGFhOGE3ODM0N2NjN2U5NzNkNWIgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDk0MTc2MTAyNzA4OCwgLTIuOTI2ODk4ODk3MDU1MzEwNV0sIFs0My4yNDg1NDYxNDMxNDk2LCAtMi45Mjk5NTQwODkzOTcxODE2XSwgWzQzLjI0OTM2ODA4OTY3MzcxNiwgLTIuOTMxNTUzMzg2MTA2OTg1Nl0sIFs0My4yNTA2MzEwNzYyNTY1MDQsIC0yLjkzMzY3NjU2NjM2MTI3Ml0sIFs0My4yNTI2OTM2Nzk2MTI2OCwgLTIuOTM0Mjg1NzQyMTUwODc5NV0sIFs0My4yNTQ4Nzc5NDM1OTI0OSwgLTIuOTMzNDAzOTgzNjE1NTc1NF0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzXSwgWzQzLjI1NzkxNDYyMTY1NTc4LCAtMi45MzI4MjIyNjIyODgwOTFdLCBbNDMuMjYwNjM2NjAyNTQ3ODIsIC0yLjkyNzk5ODcyMDYxNjc2XSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NjgzMDEyNjg3MjE4NiwgLTIuOTI3MjM2MDkzMTA1NjE4NV0sIFs0My4yNjkyMjY0MTE4MTI2NDYsIC0yLjkzMDMzNjUxNTYzMjcwOF0sIFs0My4yNzAyMjQzNDAwNzYwNTUsIC0yLjkzNzYwNDkwNDA5Nzc5Ml0sIFs0My4yNzA5NzIxNzgzMzM1NSwgLTIuOTQwODU3NDI3MjA0Mjc0NV0sIFs0My4yNzE5NDc4MDYwNzU0NywgLTIuOTQ1MDg1Mzk1NzcyMjU0N10sIFs0My4yNzIxMjE1NzU0Nzk0OSwgLTIuOTUwNTk0MjA4NzM2MjkxNV0sIFs0My4yNzMzMDQ5MjgwMjI2LCAtMi45NTUzMzQ4MzE1MTMxOTEzXSwgWzQzLjI3NDcxOTYxNDAzNjU2LCAtMi45NTg1ODk1NzE0NTIyMTEyXSwgWzQzLjI3Njc3NjAxNTM1MjA1NiwgLTIuOTYwMDU2MTA1MTAyMzUzN10sIFs0My4yNzg4MzMzNTIwOTQ4NCwgLTIuOTYxMTk0NDA4MDM5ODQzNl0sIFs0My4yODE3MDUzMDI5NDA3MTUsIC0yLjk2MjgxMjg1MzU0Nzg5N10sIFs0My4yODE3MzE3Mjk2MjMwNTQsIC0yLjk2MzAyNTEyNDA1MjExMDRdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTVjNDk0IiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTVjNDk0IiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmFmMmYyNGQ1MjdkNDM3YjhhZjRiYTFlNGI4OGE2NGEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2M5NGYwZDljZDViMTQ1MWY4YTg3YzE3ZjIyOTU2YmMzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80ZmQwN2UzMTgzMGQ0YWMyOGU0YjhlM2UyYmM4ZWQzZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNGZkMDdlMzE4MzBkNGFjMjhlNGI4ZTNlMmJjOGVkM2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjMwPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA3OTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gU2FuIElnbmF6aW88L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDI0NjM0PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2M5NGYwZDljZDViMTQ1MWY4YTg3YzE3ZjIyOTU2YmMzLnNldENvbnRlbnQoaHRtbF80ZmQwN2UzMTgzMGQ0YWMyOGU0YjhlM2UyYmM4ZWQzZik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV82YmViMzYyYjQ3OTk0YWE4YTc4MzQ3Y2M3ZTk3M2Q1Yi5iaW5kUG9wdXAocG9wdXBfYzk0ZjBkOWNkNWIxNDUxZjhhODdjMTdmMjI5NTZiYzMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzc2YzA4NDRjMWRiOTQ0ZjQ4OWQ2YTQxYmNkMDhiMjhmID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV82YmM3ZTk0MDZjYTI0ZmY4OTMzMDI0NzI4NDA4YmI0NyA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0NjUzODQ5MTIzMDc5NCwgLTIuOTQxMDM3OTU5NjcxMjM4Nl0sIFs0My4yNDYxNzY1MTk5NjUyMywgLTIuOTQwOTY2MzY4NjcyMTAyXSwgWzQzLjI0NTIxMTMxNTk2MzIsIC0yLjkzODI4Mjc2NTAxNjE4MTZdLCBbNDMuMjQ1OTI3MDAwMjIxMTQsIC0yLjkzODA3NzA4NzA3MjQwNjRdLCBbNDMuMjQ4OTM4ODMzMjQ2MzU2LCAtMi45Mzk4MzE0NjE1Mjg5MDE2XSwgWzQzLjI1MDk0NTY3MzkwNDY3NCwgLTIuOTQyMTU5MjMwOTQyODU5Ml0sIFs0My4yNTE3OTE2NDgxODEzNzQsIC0yLjk0NDAwODAyMjk1NDMyMl0sIFs0My4yNTI1NTA2OTkxODM5LCAtMi45NDU1NTMwODc4NTYzNzJdLCBbNDMuMjU0MzMwODMwMzM3NCwgLTIuOTQ0NTk0Mzk5OTQxNzU4M10sIFs0My4yNTY2NDczMTU2MDE1NSwgLTIuOTQyMjY1MTIyMzIxMjcwNF0sIFs0My4yNTg2MDM4NTgwMjkwMywgLTIuOTQxMjUyMTYyMTAzMTQ1Nl0sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3XSwgWzQzLjI2MjY5MDc2MTk3NzAzLCAtMi45MzM3NTA5OTY0MzE1NTldLCBbNDMuMjYxNTI5OTQ2NDAwMTc0LCAtMi45Mjg0NzY1ODA4ODQ2NTEzXSwgWzQzLjI2MzkzODc1OTE4MDg4LCAtMi45MjM1NzkwODA0ODA3MjI3XSwgWzQzLjI2NTIzMDg2NTMzMDkwNiwgLTIuOTI1MjIzOTc3ODMzMjQzNl0sIFs0My4yNjcxODQ2MDMzNzkwMTUsIC0yLjkyNTE4NDM2NjI3MTQ3ODddLCBbNDMuMjY2MjQxMzE0Mjk5MDgsIC0yLjkyMjg4Mzg0ODE2NDQ5NjVdLCBbNDMuMjY2OTE0NjU0Mzc1NjYsIC0yLjkyMjczNDg1Mjc0OTMxNl0sIFs0My4yNjgwNTI1NjkyNTU5MzYsIC0yLjkyNDQ0MzY4ODA3NjMzMl0sIFs0My4yNjgzNzExODA3ODM2NDYsIC0yLjkyNjQ3ODM1ODQxMDAwNF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNiM2IzYjMiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNiM2IzYjMiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NmMwODQ0YzFkYjk0NGY0ODlkNmE0MWJjZDA4YjI4Zik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfM2UzNTU0NmExYTQ4NDc2ZDg1NGE5NzU1MGE2NjgzNjUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzZmZDBhNDY0YzgzZjQxMjc5YmJmYTc2MTg4YzQwOTM0ID0gJChgPGRpdiBpZD0iaHRtbF82ZmQwYTQ2NGM4M2Y0MTI3OWJiZmE3NjE4OGM0MDkzNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzE8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMTEwPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBDYXN0YcOxb3MvR2F6dGVsZWt1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDI2NjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZTM1NTQ2YTFhNDg0NzZkODU0YTk3NTUwYTY2ODM2NS5zZXRDb250ZW50KGh0bWxfNmZkMGE0NjRjODNmNDEyNzliYmZhNzYxODhjNDA5MzQpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfNmJjN2U5NDA2Y2EyNGZmODkzMzAyNDcyODQwOGJiNDcuYmluZFBvcHVwKHBvcHVwXzNlMzU1NDZhMWE0ODQ3NmQ4NTRhOTc1NTBhNjY4MzY1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9mMmZiYTM2OWQ2ZWE0YTMxODIyODNkNDFmYjNhZDI2NSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMDNlNWJkMTkzZDE0NDhlODlhNTg4ZDgyNjhkNTUxYjAgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNjgzNzExODA3ODM2NDYsIC0yLjkyNjQ3ODM1ODQxMDAwNF0sIFs0My4yNjkyMDc2NDI3NTMwOTUsIC0yLjkyODYyODQ5ODE5MDgwNzVdLCBbNDMuMjY2MjA4ODk0NTIyODIsIC0yLjkyNTQ5MDk3Nzg5ODYwMDddLCBbNDMuMjY0NDkyMTMxNjAwNjEsIC0yLjkyNDUwNjA3NTgzNDMwMzNdLCBbNDMuMjYyODQ1MTIxMTIyMTA1LCAtMi45MjMwNTkxNDMzOTk4NjE2XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYxNzMyNTg4MjYxMjgsIC0yLjkyODk2NzA0MTM4NTY0ODNdLCBbNDMuMjYyNzA5ODY3MzkwOTcsIC0yLjkzMzQ1NzIzODcwMjE1NzRdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1XSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1MjIwNDIxMTg0NzAxLCAtMi45NDUwMDQ3MzQ4Njg2OTg3XSwgWzQzLjI1MTQ1NDQ1MDM5MjAyNSwgLTIuOTQzNDY1MTc3ODk3OTI2XSwgWzQzLjI1MDg1NTQ1MzU1NDYxNCwgLTIuOTQyMTczMzI0NDMzNTk1NV0sIFs0My4yNDg5MDg5OTA3MDMxNCwgLTIuOTM5OTIyNjcyMDMzMjkyM10sIFs0My4yNDU2MzY3OTM1MTUwMywgLTIuOTM3MTQwOTA5NTg2MDQxXSwgWzQzLjI0NTE4MDk1OTc1NjU5NSwgLTIuOTM4NTYxMjA1NzQ5OTczXSwgWzQzLjI0NjUzODQ5MTIzMDc5NCwgLTIuOTQxMDM3OTU5NjcxMjM4Nl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM2NmMyYTUiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM2NmMyYTUiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mMmZiYTM2OWQ2ZWE0YTMxODIyODNkNDFmYjNhZDI2NSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTQ4YWU4M2VkMmY0NGJjYWI1Y2E0YzA3YzQ2MzNmNDcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2I1MjYxMmJhZDRmMDRlNzNhOGNkMWQxMjM2MDFmZWNhID0gJChgPGRpdiBpZD0iaHRtbF9iNTI2MTJiYWQ0ZjA0ZTczYThjZDFkMTIzNjAxZmVjYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzI8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDExPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBDYXN0YcOxb3MvR2F6dGVsZWt1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxMDQxMTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xNDhhZTgzZWQyZjQ0YmNhYjVjYTRjMDdjNDYzM2Y0Ny5zZXRDb250ZW50KGh0bWxfYjUyNjEyYmFkNGYwNGU3M2E4Y2QxZDEyMzYwMWZlY2EpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMDNlNWJkMTkzZDE0NDhlODlhNTg4ZDgyNjhkNTUxYjAuYmluZFBvcHVwKHBvcHVwXzE0OGFlODNlZDJmNDRiY2FiNWNhNGMwN2M0NjMzZjQ3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9iODc2OWRmZjM0NjQ0MGI5YTE5NDg4MzdiYjk0ODk2MiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfM2MzNzhhMGJkNmQzNDRiZmE4YmFjYzNhNzZiMWU1MzEgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNDg1NDYxNDMxNDk2LCAtMi45Mjk5NTQwODkzOTcxODE2XSwgWzQzLjI0OTM2ODA4OTY3MzcxNiwgLTIuOTMxNTUzMzg2MTA2OTg1Nl0sIFs0My4yNTA2MzEwNzYyNTY1MDQsIC0yLjkzMzY3NjU2NjM2MTI3Ml0sIFs0My4yNTE0NzU5NzYwMjE4MiwgLTIuOTM1NzM3MDA4NTcwMTA4N10sIFs0My4yNTMxMjk4MjQ3NDAzOSwgLTIuOTM1NDg0NDY2MTI2ODk0Nl0sIFs0My4yNTQ1NzQxOTQzMTcxMTUsIC0yLjkzNDU3NjQzMzcwNjc0MV0sIFs0My4yNTQ4Nzc5NDM1OTI0OSwgLTIuOTMzNDAzOTgzNjE1NTc1NF0sIFs0My4yNTYzNDM4Mjg1NTk3OSwgLTIuOTMzMjE1MTcyNTM4NzkzXSwgWzQzLjI1NzkxNDYyMTY1NTc4LCAtMi45MzI4MjIyNjIyODgwOTFdLCBbNDMuMjYwNjM2NjAyNTQ3ODIsIC0yLjkyNzk5ODcyMDYxNjc2XSwgWzQzLjI1OTU2MjQ2MzcxOTE1LCAtMi45MjQwMzc4ODExOTgwMTAzXSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQ3NzMwNzc3NTE1MiwgLTIuOTI2NzQzODk0MzQzMDc0NF0sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmM4ZDYyIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmM4ZDYyIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYjg3NjlkZmYzNDY0NDBiOWExOTQ4ODM3YmI5NDg5NjIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Q0ODZhMjQyN2MzMjRkMThiNjI2NjZkZDYyYWMwMzMwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81MDEyZDUzZDEyNjI0ODUwYTVmMmQ1MGMxNjc1ZjNhYSA9ICQoYDxkaXYgaWQ9Imh0bWxfNTAxMmQ1M2QxMjYyNDg1MGE1ZjJkNTBjMTY3NWYzYWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjMzPC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzA4MDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwNjYyODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kNDg2YTI0MjdjMzI0ZDE4YjYyNjY2ZGQ2MmFjMDMzMC5zZXRDb250ZW50KGh0bWxfNTAxMmQ1M2QxMjYyNDg1MGE1ZjJkNTBjMTY3NWYzYWEpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfM2MzNzhhMGJkNmQzNDRiZmE4YmFjYzNhNzZiMWU1MzEuYmluZFBvcHVwKHBvcHVwX2Q0ODZhMjQyN2MzMjRkMThiNjI2NjZkZDYyYWMwMzMwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF9mZTQwZWZlMjUzMjk0ZTkzODQwM2ZjMGI0M2Y3NGE1OSA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMzNmYThkY2NkMjQyNDAxZWE4MDNhZThiZWI2ODcyMTMgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2XSwgWzQzLjI1Njg0MDYzMDYzNTE0NiwgLTIuOTM0OTg0NzE1ODQ3NzU4NF0sIFs0My4yNTQ5MDUwODc2NzU1MywgLTIuOTM2Mjg1MTcyOTY2NzcyXSwgWzQzLjI1MzI3MzI0NTQ3MDI0LCAtMi45Mzc1NTc0MzU4ODcwMTYyXSwgWzQzLjI1MjAxNjEyODQ1NTg2LCAtMi45Mzc2MTY0NjAyODY1OTRdLCBbNDMuMjUwODE0NDg1NDM1OTYsIC0yLjkzNTc0NjM2NTE1MTA4OF0sIFs0My4yNDk2Mzk4OTk4MjIwNywgLTIuOTMzNzYxODU0NzQ5MTc5XSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNl0sIFs0My4yNDc2NjAyNDU2NTU4NDQsIC0yLjkzMTYxOTEzMzExNTE1N10sIFs0My4yNDY4OTA4ODgzNzI3NzUsIC0yLjkyOTc1NDUxMzkxNzgzODVdLCBbNDMuMjQ4NTQ2MTQzMTQ5NiwgLTIuOTI5OTU0MDg5Mzk3MTgxNl1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiM4ZGEwY2IiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiM4ZGEwY2IiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mZTQwZWZlMjUzMjk0ZTkzODQwM2ZjMGI0M2Y3NGE1OSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTY3NDk1ZTY1OGRhNDY3Nzg3MzZlYzBkOTJjYzg1MTYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzEzZWVjNjE1OTdjNTQ5YmJhZDZjOGMxN2M2OWY2NDk2ID0gJChgPGRpdiBpZD0iaHRtbF8xM2VlYzYxNTk3YzU0OWJiYWQ2YzhjMTdjNjlmNjQ5NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzQ8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDM1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBBdHh1cmk8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA2ODE1PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzE2NzQ5NWU2NThkYTQ2Nzc4NzM2ZWMwZDkyY2M4NTE2LnNldENvbnRlbnQoaHRtbF8xM2VlYzYxNTk3YzU0OWJiYWQ2YzhjMTdjNjlmNjQ5Nik7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8zM2ZhOGRjY2QyNDI0MDFlYTgwM2FlOGJlYjY4NzIxMy5iaW5kUG9wdXAocG9wdXBfMTY3NDk1ZTY1OGRhNDY3Nzg3MzZlYzBkOTJjYzg1MTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzQwZjUxODViMTZkZDQ2OGM5NTNiNjkxYTBhZTNmMGFhID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8zYzY3ZDBkODI0ZTU0NThiOTBiOTMzM2JkMjQ3NGNkMCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0NjQ0MTg1NDgyMTg5LCAtMi45NDIwNzMyNDA1MDk5MTk3XSwgWzQzLjI0OTQxNjk3ODAxODQ5NSwgLTIuOTQ2NjExNjQzNDEyNjkwNl0sIFs0My4yNTIyNTY2NDM2ODY3NiwgLTIuOTQ2MTgzMzMxODg1Nzg5XSwgWzQzLjI1MTQ1NDQ1MDM5MjAyNSwgLTIuOTQzNDY1MTc3ODk3OTI2XSwgWzQzLjI1MDg1NTQ1MzU1NDYxNCwgLTIuOTQyMTczMzI0NDMzNTk1NV0sIFs0My4yNDg5MDg5OTA3MDMxNCwgLTIuOTM5OTIyNjcyMDMzMjkyM10sIFs0My4yNDU2MzY3OTM1MTUwMywgLTIuOTM3MTQwOTA5NTg2MDQxXSwgWzQzLjI0NDg4NTk0NzM1ODQ5LCAtMi45MzM1MjI4MTE0NjU2OTM3XSwgWzQzLjI0Njk0ODQ5MzU1NDc3NSwgLTIuOTMyNDI4MjY1MTc2NzAzNV0sIFs0My4yNDg0OTc5NzYzNDAwNTUsIC0yLjkzMzEzNTc2NTM4NjU4OTNdLCBbNDMuMjUwNjMxMDc2MjU2NTA0LCAtMi45MzM2NzY1NjYzNjEyNzJdLCBbNDMuMjUyNjkzNjc5NjEyNjgsIC0yLjkzNDI4NTc0MjE1MDg3OTVdLCBbNDMuMjU0ODc3OTQzNTkyNDksIC0yLjkzMzQwMzk4MzYxNTU3NTRdLCBbNDMuMjU2MzQzODI4NTU5NzksIC0yLjkzMzIxNTE3MjUzODc5M10sIFs0My4yNTc3MTI4MzIyNzY2MywgLTIuOTM1MDUwMDk2NTk0Mjk0N10sIFs0My4yNTkxMTg4MTYwNzkyOCwgLTIuOTM3NTA2NDIyNjk1MzgxM10sIFs0My4yNjE1OTE0MzkwNDA0MiwgLTIuOTQwMDMyNDUwMTkwNzU2XSwgWzQzLjI2MzYxNTE0NjM1MzI3NCwgLTIuOTM5MTg3MzcxODk2MTk5XSwgWzQzLjI2MzM0ODAxMTU0Mjc0LCAtMi45MzY4NjkyNzEwMzAyNjM3XSwgWzQzLjI2MjMyNTEyNzQwNzQsIC0yLjkzNDU5OTY4OTE5OTYyMjddXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZTc4YWMzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZTc4YWMzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNDBmNTE4NWIxNmRkNDY4Yzk1M2I2OTFhMGFlM2YwYWEpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2RkMjg4M2E3ZGQxZjQ0NThhOTEwNmJmNGVlZDQzMmE2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wMDBiZjZkOTU2ZTg0MDE1YjMxNDA3ZTNhZGNhMTg0MyA9ICQoYDxkaXYgaWQ9Imh0bWxfMDAwYmY2ZDk1NmU4NDAxNWIzMTQwN2UzYWRjYTE4NDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjM1PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzEwNTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTW95dWE8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDA5OTc2PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2RkMjg4M2E3ZGQxZjQ0NThhOTEwNmJmNGVlZDQzMmE2LnNldENvbnRlbnQoaHRtbF8wMDBiZjZkOTU2ZTg0MDE1YjMxNDA3ZTNhZGNhMTg0Myk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV8zYzY3ZDBkODI0ZTU0NThiOTBiOTMzM2JkMjQ3NGNkMC5iaW5kUG9wdXAocG9wdXBfZGQyODgzYTdkZDFmNDQ1OGE5MTA2YmY0ZWVkNDMyYTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzUwYTBhYTI0MmIyMjRmNGM5N2YxNTIzMGE4ZDIzMjM0ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV9lYWYzNGEyMjZlNWM0ZmMwOWJlNzI5NTRhNjU5OWIyNiA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI2MjMyNTEyNzQwNzQsIC0yLjkzNDU5OTY4OTE5OTYyMjddLCBbNDMuMjU4MTgyOTYwNTUwMzY0LCAtMi45MzUzNDc3NDg2NDMyOTk1XSwgWzQzLjI1Njg0MDYzMDYzNTE0NiwgLTIuOTM0OTg0NzE1ODQ3NzU4NF0sIFs0My4yNTQ5MDUwODc2NzU1MywgLTIuOTM2Mjg1MTcyOTY2NzcyXSwgWzQzLjI1MzI3MzI0NTQ3MDI0LCAtMi45Mzc1NTc0MzU4ODcwMTYyXSwgWzQzLjI1MjAxNjEyODQ1NTg2LCAtMi45Mzc2MTY0NjAyODY1OTRdLCBbNDMuMjUwODE0NDg1NDM1OTYsIC0yLjkzNTc0NjM2NTE1MTA4OF0sIFs0My4yNDk2Mzk4OTk4MjIwNywgLTIuOTMzNzYxODU0NzQ5MTc5XSwgWzQzLjI0ODMwNDM3NTc3NDYxNiwgLTIuOTMzMjA1Nzc1MDM0NDUzNl0sIFs0My4yNDY5Mjc0ODg0MDA2MiwgLTIuOTMyNTQyMDM1MDA2NjUwN10sIFs0My4yNDQ5MjgxNzg3ODI1NiwgLTIuOTMzNzQzMjE1MjIwMDYxXSwgWzQzLjI0NTkyNzAwMDIyMTE0LCAtMi45MzgwNzcwODcwNzI0MDY0XSwgWzQzLjI0ODkzODgzMzI0NjM1NiwgLTIuOTM5ODMxNDYxNTI4OTAxNl0sIFs0My4yNTA5NDU2NzM5MDQ2NzQsIC0yLjk0MjE1OTIzMDk0Mjg1OTJdLCBbNDMuMjUxNzkxNjQ4MTgxMzc0LCAtMi45NDQwMDgwMjI5NTQzMjJdLCBbNDMuMjUyNDY2MzE1NDc5NjIsIC0yLjk0NjI0NzYwMjUzOTgwMV0sIFs0My4yNDk0MjM0MTk3ODQ2MSwgLTIuOTQ2OTg2NzY0NzgyNzA3N10sIFs0My4yNDY2ODQyNDc1OTAwNzUsIC0yLjk0MTY0NzM3OTM3NzAzM10sIFs0My4yNDY0NDE4NTQ4MjE4OSwgLTIuOTQyMDczMjQwNTA5OTE5N11dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNhNmQ4NTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNhNmQ4NTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF81MGEwYWEyNDJiMjI0ZjRjOTdmMTUyMzBhOGQyMzIzNCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfN2U4YWQ1MzNkY2Y0NDEwNWJhZmQ0NmM1YzhiMGE0MmMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2MzNWJlN2I2ODM2MDQ5MTg5MmRjY2JjZDYzMmI5MmVkID0gJChgPGRpdiBpZD0iaHRtbF9jMzViZTdiNjgzNjA0OTE4OTJkY2NiY2Q2MzJiOTJlZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzY8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDgyPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBNb3l1YTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTAxMDA8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfN2U4YWQ1MzNkY2Y0NDEwNWJhZmQ0NmM1YzhiMGE0MmMuc2V0Q29udGVudChodG1sX2MzNWJlN2I2ODM2MDQ5MTg5MmRjY2JjZDYzMmI5MmVkKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lX2VhZjM0YTIyNmU1YzRmYzA5YmU3Mjk1NGE2NTk5YjI2LmJpbmRQb3B1cChwb3B1cF83ZThhZDUzM2RjZjQ0MTA1YmFmZDQ2YzVjOGIwYTQyYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfZTlmMmJhYTEzZGFiNGVmNThjZGFhMTc0MTZlMGNlNTYgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzhmYjc1MDkwMTdkMjRlODY5Nzk4MzU0NTJkYmE0MDhhID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjM4NzY3OTkyNDEzNTMsIC0yLjk0ODQ3ODQwOTUwNjI2OF0sIFs0My4yNDA0NTg5MDMzNTkxLCAtMi45NDk2NTQwODkyNDc5NzM3XSwgWzQzLjI0MzE5OTYyMTcwMTM2NSwgLTIuOTQ5MDg0OTEwOTgyODgwM10sIFs0My4yNDY5MzEyMDM2MTUxNiwgLTIuOTQ4MjYzOTE5NDc0MjA0Nl0sIFs0My4yNDk0MTY5NzgwMTg0OTUsIC0yLjk0NjYxMTY0MzQxMjY5MDZdLCBbNDMuMjUyMjU2NjQzNjg2NzYsIC0yLjk0NjE4MzMzMTg4NTc4OV0sIFs0My4yNTQzMzA4MzAzMzc0LCAtMi45NDQ1OTQzOTk5NDE3NTgzXSwgWzQzLjI1NjY0NzMxNTYwMTU1LCAtMi45NDIyNjUxMjIzMjEyNzA0XSwgWzQzLjI1ODYwMzg1ODAyOTAzLCAtMi45NDEyNTIxNjIxMDMxNDU2XSwgWzQzLjI2MTU5MTQzOTA0MDQyLCAtMi45NDAwMzI0NTAxOTA3NTZdLCBbNDMuMjYzNjE1MTQ2MzUzMjc0LCAtMi45MzkxODczNzE4OTYxOTldLCBbNDMuMjYzMzQ4MDExNTQyNzQsIC0yLjkzNjg2OTI3MTAzMDI2MzddLCBbNDMuMjYyNjkwNzYxOTc3MDMsIC0yLjkzMzc1MDk5NjQzMTU1OV0sIFs0My4yNjE1Mjk5NDY0MDAxNzQsIC0yLjkyODQ3NjU4MDg4NDY1MTNdLCBbNDMuMjU5NTYyNDYzNzE5MTUsIC0yLjkyNDAzNzg4MTE5ODAxMDNdLCBbNDMuMjU3MDkwMzQyNTMzMDc1LCAtMi45MjcxMjkyOTUwNzc5MjM3XSwgWzQzLjI1NDA4ODQ3OTQyNDEwNSwgLTIuOTI1MDgwMzY4ODQwODcwNl0sIFs0My4yNTQ3NzMwNzc3NTE1MiwgLTIuOTI2NzQzODk0MzQzMDc0NF0sIFs0My4yNTQ5Nzk5NDU5NTcyNSwgLTIuOTIyMDk5Nzg5OTA0NjE5XSwgWzQzLjI1MzU3MTEwNzQzMDMyNSwgLTIuOTIxMzQ4MjQ4NzMzOTczXSwgWzQzLjI1MTQ1ODA4NDk1MjE1NSwgLTIuOTIxNDQ0NTc1MDY4NjU1XSwgWzQzLjI0OTk5NDUzNzIwNTIyLCAtMi45MTY4NTAzODA0MDc5NzhdLCBbNDMuMjQ5OTkyMDY1NTEzNjMsIC0yLjkxNzQ3ODI1NzE1NzA2ODVdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjZmZkOTJmIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjZmZkOTJmIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZTlmMmJhYTEzZGFiNGVmNThjZGFhMTc0MTZlMGNlNTYpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzQ4ODFlZTMzMGI3MTQwODZiZWFiYzYzMGQ3Y2MyYjY2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81MmQwMzFjN2ZhNWQ0Yzg3YmU3NTk0ZTRhM2IwYzIzZSA9ICQoYDxkaXYgaWQ9Imh0bWxfNTJkMDMxYzdmYTVkNGM4N2JlNzU5NGU0YTNiMGMyM2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjM3PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzExMjwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gTWluYSBEZWwgTW9ycm88L3RkPjwvdHI+PHRyPjx0aD50cmlwX2lkPC90aD48dGQ+NDExMjI2PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzQ4ODFlZTMzMGI3MTQwODZiZWFiYzYzMGQ3Y2MyYjY2LnNldENvbnRlbnQoaHRtbF81MmQwMzFjN2ZhNWQ0Yzg3YmU3NTk0ZTRhM2IwYzIzZSk7CiAgICAgICAgCgogICAgICAgIHBvbHlfbGluZV84ZmI3NTA5MDE3ZDI0ZTg2OTc5ODM1NDUyZGJhNDA4YS5iaW5kUG9wdXAocG9wdXBfNDg4MWVlMzMwYjcxNDA4NmJlYWJjNjMwZDdjYzJiNjYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2IxMmZhZWQwNDRkYzQ1ZmZiYTA0ZDc4NjJlNDI5MjgxID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvbHlfbGluZV8zZmFhMmY0ODQzNGM0ZDE0OTA5MTVmMjM5MjVlYTZlMCA9IEwucG9seWxpbmUoCiAgICAgICAgICAgICAgICBbWzQzLjI0OTk5MjA2NTUxMzYzLCAtMi45MTc0NzgyNTcxNTcwNjg1XSwgWzQzLjI0ODg4NDQ3MzA0OTY4LCAtMi45MTkzMzcwMzQ0OTM1MDk1XSwgWzQzLjI1MTUzMTM3NTI3NjEsIC0yLjkyMTQxNDQ0NTI1MTUwNjddLCBbNDMuMjUzNTk2NDczNjg4NDc1LCAtMi45MjEyNzQwODAxNDE1MjkzXSwgWzQzLjI1NTAzMDY1MjEyODcsIC0yLjkyMjAwMTcxOTEzMTA3NjhdLCBbNDMuMjU2NTk2MzE0ODEzMzg2LCAtMi45MjU3MDc5MDQ3MDk0NTQ1XSwgWzQzLjI1OTc5NTgzMzEyMzI5LCAtMi45MjQwODcyNzkzMTM5NDldLCBbNDMuMjYxNzMyNTg4MjYxMjgsIC0yLjkyODk2NzA0MTM4NTY0ODNdLCBbNDMuMjYyNzA5ODY3MzkwOTcsIC0yLjkzMzQ1NzIzODcwMjE1NzRdLCBbNDMuMjYzMjg5NzI1MzM5NTUsIC0yLjkzNTk4NzI3NDM0NzM4MzRdLCBbNDMuMjYzNjQ0NjIyMzk5NTQ2LCAtMi45MzkyODYyNDU4MTI0MTA1XSwgWzQzLjI2MTE3MTIxMjU0MzEzLCAtMi45NDAyNzE5NzM5ODg0ODY0XSwgWzQzLjI1ODM1ODk1MTY3NjA0NCwgLTIuOTQxNDExMzc4Nzc1NjMxN10sIFs0My4yNTcyNzU0MTUxMjQ2OCwgLTIuOTQxNzI4OTUzNjU4ODg1XSwgWzQzLjI1NDM2NDAxMjk1OTA1LCAtMi45NDQ3MTg1MDE1ODgxMTE0XSwgWzQzLjI1MjQ2NjMxNTQ3OTYyLCAtMi45NDYyNDc2MDI1Mzk4MDFdLCBbNDMuMjQ5NDIzNDE5Nzg0NjEsIC0yLjk0Njk4Njc2NDc4MjcwNzddLCBbNDMuMjQ1ODI1ODcxNTc5NDIsIC0yLjk0ODY5MjY4MzUwODg2NF0sIFs0My4yNDM0MzQ1NjUwOTQ5MiwgLTIuOTQ5MDcwNzc2NjkwNDY0XSwgWzQzLjI0MDExNDcwNTUyMzk5LCAtMi45NDk3MzMwNzcwNTQ3OTVdLCBbNDMuMjM4NzY3OTkyNDEzNTMsIC0yLjk0ODQ3ODQwOTUwNjI2OF1dLAogICAgICAgICAgICAgICAgeyJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwgImNvbG9yIjogIiNlNWM0OTQiLCAiZGFzaEFycmF5IjogbnVsbCwgImRhc2hPZmZzZXQiOiBudWxsLCAiZmlsbCI6IGZhbHNlLCAiZmlsbENvbG9yIjogIiNlNWM0OTQiLCAiZmlsbE9wYWNpdHkiOiAwLjIsICJmaWxsUnVsZSI6ICJldmVub2RkIiwgImxpbmVDYXAiOiAicm91bmQiLCAibGluZUpvaW4iOiAicm91bmQiLCAibm9DbGlwIjogZmFsc2UsICJvcGFjaXR5IjogMS4wLCAic21vb3RoRmFjdG9yIjogMS4wLCAic3Ryb2tlIjogdHJ1ZSwgIndlaWdodCI6IDN9CiAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9iMTJmYWVkMDQ0ZGM0NWZmYmEwNGQ3ODYyZTQyOTI4MSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYjE1Zjk1MzUwY2EwNDIyZWJkZThhYzY0NTk1Yjk1MmMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzhhZGU4NTAwNmE3OTQ2OWI4YjI1NDk2MzU3YzBmOWVjID0gJChgPGRpdiBpZD0iaHRtbF84YWRlODUwMDZhNzk0NjliOGIyNTQ5NjM1N2MwZjllYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+PHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPjx0cj48dGg+ZGlyZWN0aW9uX2lkPC90aD48dGQ+PC90ZD48L3RyPjx0cj48dGg+cm91dGVfaWQ8L3RoPjx0ZD4yMzg8L3RkPjwvdHI+PHRyPjx0aD5zZXJ2aWNlX2lkPC90aD48dGQ+MTwvdGQ+PC90cj48dHI+PHRoPnNoYXBlX2lkPC90aD48dGQ+c2hhcGVfMDMwPC90ZD48L3RyPjx0cj48dGg+dHJpcF9oZWFkc2lnbjwvdGg+PHRkPiBNaW5hIERlbCBNb3JybzwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MTE1MDg8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYjE1Zjk1MzUwY2EwNDIyZWJkZThhYzY0NTk1Yjk1MmMuc2V0Q29udGVudChodG1sXzhhZGU4NTAwNmE3OTQ2OWI4YjI1NDk2MzU3YzBmOWVjKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzNmYWEyZjQ4NDM0YzRkMTQ5MDkxNWYyMzkyNWVhNmUwLmJpbmRQb3B1cChwb3B1cF9iMTVmOTUzNTBjYTA0MjJlYmRlOGFjNjQ1OTViOTUyYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfZjA2NzFiNWY3Zjk3NGE2ZGE3MTEwNDQ4MDc2MjNiYTIgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lXzI3M2I1OTYwZDk5ZjRiZmQ5N2ViOTcyMDliNGEzZWI5ID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjcxMTIzODg1MzMwMTM0LCAtMi45NzA5OTYyODA2OTUwMTQ4XSwgWzQzLjI3MjE4NzQwMTA0MjI1LCAtMi45NjkyNDE4ODY2NDk1NzI3XSwgWzQzLjI3MzM5OTM0Njk0ODM5NSwgLTIuOTcwNjI4NjkzMTgxMjAzNl0sIFs0My4yNzUwMTc4NzEzMzU0NCwgLTIuOTcyNzE2OTk5ODA4ODMyN10sIFs0My4yNzc0NzA0MTI3NzIzNSwgLTIuOTc0OTQ5Njk0MjU0NzI1M10sIFs0My4yNzY2NDgzMjMyOTQ5MzUsIC0yLjk3MjE2MDU4MTUwNjk4ODVdLCBbNDMuMjY0NzI0NjgwNzU5MDgsIC0yLjk2MTE0OTkwMTQ2NjAyMTZdLCBbNDMuMjYyNTQ3MDkxMDkzMDA1LCAtMi45NTYzMjg5NTM0MTgyNTMzXSwgWzQzLjI1OTQ2MDA0MzMwMDE1LCAtMi45NTIyNjkxOTMzODU4NTM0XSwgWzQzLjI1Nzk0NDg1ODYzODA3LCAtMi45NDkwNTU0Njg2NzYyODkzXSwgWzQzLjI1NzU4NzUzNzcwNDEwNCwgLTIuOTQyNTIzODU4Njc4NDM1XSwgWzQzLjI1NzMzMjI1NDIwNDYsIC0yLjkzNzYxMDU0ODM5NzE1MV0sIFs0My4yNTcyMjI3NDQ5NTI1MSwgLTIuOTM1MzAzNTI2MTcwNDg4XSwgWzQzLjI1NzkxNDYyMTY1NTc4LCAtMi45MzI4MjIyNjIyODgwOTFdLCBbNDMuMjYwNjM2NjAyNTQ3ODIsIC0yLjkyNzk5ODcyMDYxNjc2XSwgWzQzLjI1OTU2MjQ2MzcxOTE1LCAtMi45MjQwMzc4ODExOTgwMTAzXSwgWzQzLjI1NzA5MDM0MjUzMzA3NSwgLTIuOTI3MTI5Mjk1MDc3OTIzN10sIFs0My4yNTQ3NzMwNzc3NTE1MiwgLTIuOTI2NzQzODk0MzQzMDc0NF0sIFs0My4yNTQwODg0Nzk0MjQxMDUsIC0yLjkyNTA4MDM2ODg0MDg3MDZdLCBbNDMuMjU1MDI5MjYyODI1NzQ0LCAtMi45MjI1NTc3MjQ2MTc3MjZdXSwKICAgICAgICAgICAgICAgIHsiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsICJjb2xvciI6ICIjYjNiM2IzIiwgImRhc2hBcnJheSI6IG51bGwsICJkYXNoT2Zmc2V0IjogbnVsbCwgImZpbGwiOiBmYWxzZSwgImZpbGxDb2xvciI6ICIjYjNiM2IzIiwgImZpbGxPcGFjaXR5IjogMC4yLCAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsICJsaW5lQ2FwIjogInJvdW5kIiwgImxpbmVKb2luIjogInJvdW5kIiwgIm5vQ2xpcCI6IGZhbHNlLCAib3BhY2l0eSI6IDEuMCwgInNtb290aEZhY3RvciI6IDEuMCwgInN0cm9rZSI6IHRydWUsICJ3ZWlnaHQiOiAzfQogICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjA2NzFiNWY3Zjk3NGE2ZGE3MTEwNDQ4MDc2MjNiYTIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzAwNmI5YjcyMjk1MTQyN2RhN2M1N2YzZDcyOWQ4ZTc4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9kZWUzZDVjODM5YmI0ODRjOTk1YTY2MDk0NzhjYWYzMiA9ICQoYDxkaXYgaWQ9Imh0bWxfZGVlM2Q1YzgzOWJiNDg0Yzk5NWE2NjA5NDc4Y2FmMzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj48dHI+PHRoPmRpcmVjdGlvbl9pZDwvdGg+PHRkPjwvdGQ+PC90cj48dHI+PHRoPnJvdXRlX2lkPC90aD48dGQ+MjM5PC90ZD48L3RyPjx0cj48dGg+c2VydmljZV9pZDwvdGg+PHRkPjE8L3RkPjwvdHI+PHRyPjx0aD5zaGFwZV9pZDwvdGg+PHRkPnNoYXBlXzEyMDwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaGVhZHNpZ248L3RoPjx0ZD4gQXR4dXJpPC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQwNzAyNjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wMDZiOWI3MjI5NTE0MjdkYTdjNTdmM2Q3MjlkOGU3OC5zZXRDb250ZW50KGh0bWxfZGVlM2Q1YzgzOWJiNDg0Yzk5NWE2NjA5NDc4Y2FmMzIpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfMjczYjU5NjBkOTlmNGJmZDk3ZWI5NzIwOWI0YTNlYjkuYmluZFBvcHVwKHBvcHVwXzAwNmI5YjcyMjk1MTQyN2RhN2M1N2YzZDcyOWQ4ZTc4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgZmVhdHVyZV9ncm91cF8wMzQ1OTZjODY2ZjA0ZWM5YTA1MmRhNzEyZWE4YTZkNCA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb2x5X2xpbmVfMGI2MmUyZWNhZDcwNDJmNmI3NDI0ZWRiNjI4YmJhOTcgPSBMLnBvbHlsaW5lKAogICAgICAgICAgICAgICAgW1s0My4yNTUwMjkyNjI4MjU3NDQsIC0yLjkyMjU1NzcyNDYxNzcyNl0sIFs0My4yNTY1OTYzMTQ4MTMzODYsIC0yLjkyNTcwNzkwNDcwOTQ1NDVdLCBbNDMuMjU5Nzk1ODMzMTIzMjksIC0yLjkyNDA4NzI3OTMxMzk0OV0sIFs0My4yNjA4NDkxNDE1NjY4LCAtMi45Mjc5MTY4MjUzNDAzMjE2XSwgWzQzLjI1NzM1MDc1MTM4Mzg0NiwgLTIuOTM1MzEzNjYwMDQyNzE1NF0sIFs0My4yNTc0ODIxMjQxMzEyLCAtMi45Mzc4NTkxMTMwNzkyMjVdLCBbNDMuMjU3NzE4NjQwNDQyNCwgLTIuOTQyNzM4MDAyMzI2OTk0NV0sIFs0My4yNTgwMDAxOTI3ODk2LCAtMi45NDkwNTI1MjkxMjk2MjE1XSwgWzQzLjI2MDEwMTE1Njg3ODE4LCAtMi45NTI5NzE0OTM3NTUyMDk0XSwgWzQzLjI2MjgxNjU2MDMwMzI4LCAtMi45NTYzOTk3NTc1MzE2MDU3XSwgWzQzLjI2NDk3MjExNTM1MTY5LCAtMi45NjEyMjEwNzQ2MTMwMjQzXSwgWzQzLjI3NTY4NzE4NjkwODYsIC0yLjk3MTkwMDAxNzM2MjczNzddLCBbNDMuMjczMjA2NTU4OTg2MjgsIC0yLjk3MTU3NjE0OTM0ODIyNF0sIFs0My4yNzE5NjQ5OTcwNjQ5MzQsIC0yLjk2OTQzNjQwNjQ4MDc4NjNdLCBbNDMuMjcxMTIzODg1MzMwMTM0LCAtMi45NzA5OTYyODA2OTUwMTQ4XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiIzY2YzJhNSIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiIzY2YzJhNSIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzAzNDU5NmM4NjZmMDRlYzlhMDUyZGE3MTJlYThhNmQ0KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zOWE1YTJjNzczMmU0YmQxYjgzNzMzMjYwMWI4N2IxZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzkzNzAzYWFmMjU4NDU5Y2JmNzUwMGY2ZjAzZWQwNGYgPSAkKGA8ZGl2IGlkPSJodG1sXzc5MzcwM2FhZjI1ODQ1OWNiZjc1MDBmNmYwM2VkMDRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjI0MDwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8wMzQ8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEF0eHVyaTwvdGQ+PC90cj48dHI+PHRoPnRyaXBfaWQ8L3RoPjx0ZD40MDcxMzg8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzlhNWEyYzc3MzJlNGJkMWI4MzczMzI2MDFiODdiMWYuc2V0Q29udGVudChodG1sXzc5MzcwM2FhZjI1ODQ1OWNiZjc1MDBmNmYwM2VkMDRmKTsKICAgICAgICAKCiAgICAgICAgcG9seV9saW5lXzBiNjJlMmVjYWQ3MDQyZjZiNzQyNGVkYjYyOGJiYTk3LmJpbmRQb3B1cChwb3B1cF8zOWE1YTJjNzczMmU0YmQxYjgzNzMzMjYwMWI4N2IxZikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfOThmOGFlNGNmMTM2NGI2Njg3NmQ4NDI1ZmM0ZTU2Y2EgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2E0MjljYzA1N2U3NDQ1MDE4ZWY4NTE3MDRkM2ZiNTZiKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9seV9saW5lX2U0OTc1MWFhOGM0ZjRkODE5MzFjMDFjNzg3MDg2ZTkxID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgIFtbNDMuMjU1Njk2OTI3MzM0NTc2LCAtMi45NzM0NDE0NjM2NDgwOTkyXSwgWzQzLjI1NTE0NTY4ODAyMDI4NSwgLTIuOTcxOTM2MjIyOTE1NTUxN10sIFs0My4yNTY5MDQ5NDY5MDc1NCwgLTIuOTcwNTA5NzQ5NDExMDY4Nl0sIFs0My4yNjE0MDAwNTUxMjExODYsIC0yLjk3MTQzMTI0NDMyMDUyMzddLCBbNDMuMjcyMTkwNTUyODk2OTY2LCAtMi45NzQxMTkxMzQ2Mzk5NTQzXSwgWzQzLjI3MzIwNjU1ODk4NjI4LCAtMi45NzE1NzYxNDkzNDgyMjRdLCBbNDMuMjc1MDE3ODcxMzM1NDQsIC0yLjk3MjcxNjk5OTgwODgzMjddLCBbNDMuMjY0NzI0NjgwNzU5MDgsIC0yLjk2MTE0OTkwMTQ2NjAyMTZdLCBbNDMuMjYyNTQ3MDkxMDkzMDA1LCAtMi45NTYzMjg5NTM0MTgyNTMzXSwgWzQzLjI1OTQ2MDA0MzMwMDE1LCAtMi45NTIyNjkxOTMzODU4NTM0XSwgWzQzLjI1Nzk0NDg1ODYzODA3LCAtMi45NDkwNTU0Njg2NzYyODkzXSwgWzQzLjI1NzU4NzUzNzcwNDEwNCwgLTIuOTQyNTIzODU4Njc4NDM1XSwgWzQzLjI1ODYwMzg1ODAyOTAzLCAtMi45NDEyNTIxNjIxMDMxNDU2XSwgWzQzLjI1OTkxNzYxMjEyNzM1LCAtMi45NDAwNzg1NTQ0ODI0NTQ0XV0sCiAgICAgICAgICAgICAgICB7ImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLCAiY29sb3IiOiAiI2ZjOGQ2MiIsICJkYXNoQXJyYXkiOiBudWxsLCAiZGFzaE9mZnNldCI6IG51bGwsICJmaWxsIjogZmFsc2UsICJmaWxsQ29sb3IiOiAiI2ZjOGQ2MiIsICJmaWxsT3BhY2l0eSI6IDAuMiwgImZpbGxSdWxlIjogImV2ZW5vZGQiLCAibGluZUNhcCI6ICJyb3VuZCIsICJsaW5lSm9pbiI6ICJyb3VuZCIsICJub0NsaXAiOiBmYWxzZSwgIm9wYWNpdHkiOiAxLjAsICJzbW9vdGhGYWN0b3IiOiAxLjAsICJzdHJva2UiOiB0cnVlLCAid2VpZ2h0IjogM30KICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzk4ZjhhZTRjZjEzNjRiNjY4NzZkODQyNWZjNGU1NmNhKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83MDVkMmIyYzJiMzc0NDNhOTYxNjVhNmU2NzExMzI1NSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMjc0YmQxZDEyNjdhNGNhNDgzMTAwYjdkOTcwOTlhZTMgPSAkKGA8ZGl2IGlkPSJodG1sXzI3NGJkMWQxMjY3YTRjYTQ4MzEwMGI3ZDk3MDk5YWUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+PHRyPjx0aD5kaXJlY3Rpb25faWQ8L3RoPjx0ZD48L3RkPjwvdHI+PHRyPjx0aD5yb3V0ZV9pZDwvdGg+PHRkPjI0MTwvdGQ+PC90cj48dHI+PHRoPnNlcnZpY2VfaWQ8L3RoPjx0ZD4xPC90ZD48L3RyPjx0cj48dGg+c2hhcGVfaWQ8L3RoPjx0ZD5zaGFwZV8xMjM8L3RkPjwvdHI+PHRyPjx0aD50cmlwX2hlYWRzaWduPC90aD48dGQ+IEluZGF1dHh1PC90ZD48L3RyPjx0cj48dGg+dHJpcF9pZDwvdGg+PHRkPjQxNjA4ODwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83MDVkMmIyYzJiMzc0NDNhOTYxNjVhNmU2NzExMzI1NS5zZXRDb250ZW50KGh0bWxfMjc0YmQxZDEyNjdhNGNhNDgzMTAwYjdkOTcwOTlhZTMpOwogICAgICAgIAoKICAgICAgICBwb2x5X2xpbmVfZTQ5NzUxYWE4YzRmNGQ4MTkzMWMwMWM3ODcwODZlOTEuYmluZFBvcHVwKHBvcHVwXzcwNWQyYjJjMmIzNzQ0M2E5NjE2NWE2ZTY3MTEzMjU1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbGF5ZXJfY29udHJvbF80ZGUyZDlkYWY1ZGQ0NzIzYmQ1YzZjYWJjZmQ0MDdhNSA9IHsKICAgICAgICAgICAgICAgIGJhc2VfbGF5ZXJzIDogewogICAgICAgICAgICAgICAgICAgICJjYXJ0b2RicG9zaXRyb24iIDogdGlsZV9sYXllcl8xOTRlOTAxMDI2NWE0NTcwYmI1MDI2MjM2OWI0MzI4MCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvdmVybGF5cyA6ICB7CiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0NjY4IiA6IGZlYXR1cmVfZ3JvdXBfZjFkMzBlMTBjNGExNDAxZmI5ZTRkNGNjN2ZlZTRiZWUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0NzgwIiA6IGZlYXR1cmVfZ3JvdXBfMDg4YTFmNTQxN2U4NDJkZmEwNDY3MDAxZmQ0MWViOTUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5MDE4IiA6IGZlYXR1cmVfZ3JvdXBfNzM3OGMxZjdiZDFjNDcwZjllMzk5YzZiMjE1ZTBjOWEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5Mjg1IiA6IGZlYXR1cmVfZ3JvdXBfNDc0MGU4YjJiODQyNDYwNzlmYzdhMTc3NWMzODYwYWUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEzMjQyIiA6IGZlYXR1cmVfZ3JvdXBfNGVmZDQwNTBmNTA0NDJhODk0NWEyNTNmYzViOWVmNGEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEzMzg4IiA6IGZlYXR1cmVfZ3JvdXBfNzA4YjE5YWNiZWJlNDQxN2I2ZTBhZGNjN2VhMGVmYTcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI0OTg2IiA6IGZlYXR1cmVfZ3JvdXBfNjMyOGZiOTRlMjE5NGMyN2I3ZDQyMzk0NTJjZjA3MDgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI1MDUxIiA6IGZlYXR1cmVfZ3JvdXBfNDdkMzZjZWJmMTgwNGEwMTljOWMyNThhZDlmY2Y4NjUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA4MzI4IiA6IGZlYXR1cmVfZ3JvdXBfMWQ5YzRlNTdiNTdiNDgyMGFkM2NhZDkyNTZlYjM3Y2UsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA4NTEwIiA6IGZlYXR1cmVfZ3JvdXBfYWJkNjUzZTU5NWY2NDM1ZTkyZjU1MGVkZjY1OGM1ZjMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0MzM0IiA6IGZlYXR1cmVfZ3JvdXBfN2FhNzU5MDI0NTgzNDNkMDg5YzVlZjVhZmYwY2NiODEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0NDc4IiA6IGZlYXR1cmVfZ3JvdXBfY2VjOTU3ZDk5ZTYwNGE1ZjllM2M5MmVmMjczNmVlNzEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2MzA1IiA6IGZlYXR1cmVfZ3JvdXBfZGMyZmMwYWFiNWQwNGE5NjlmYjBhOTdmZWMwYTkwOTMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2NDcxIiA6IGZlYXR1cmVfZ3JvdXBfZTRmM2Y3ZTZhN2ZhNGE4Y2JhNGQ0NDlmOWU3ZDM2NTYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1Mjk5IiA6IGZlYXR1cmVfZ3JvdXBfZDgxZGFmNmQ0NzM2NGM0Njg1N2NlYmYyYmEwNzk2N2MsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1NDYxIiA6IGZlYXR1cmVfZ3JvdXBfYjFkNWRmZGQ4NjI4NDA5MGFiOWZkZWM4ZDlmM2Y4NzMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2NTQzIiA6IGZlYXR1cmVfZ3JvdXBfZTcyNzQ4NzkzNTliNDg2YjllNjAwMmVkOWNmN2MyNjgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2NzI2IiA6IGZlYXR1cmVfZ3JvdXBfZjFmY2VkYmViNDljNGIxN2JmN2IzZmZhMDdkOWRjZDcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5NjU4IiA6IGZlYXR1cmVfZ3JvdXBfZmQ2YjBhNWE5ZGNkNGNkZWIyM2ViNjcxOTQwNzMyMjQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDMyNDIxIiA6IGZlYXR1cmVfZ3JvdXBfZGM2MmQ5YzNjNDcxNDIxZTgwMTYyNGZlZjRiMGUzMTcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExNjU0IiA6IGZlYXR1cmVfZ3JvdXBfOTM5YzE0MTRhYTQxNGI5YmEzNTU4MzM0NjI3ZmVjN2UsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExNzgwIiA6IGZlYXR1cmVfZ3JvdXBfOTc0MmMyNTgwYzIxNDhiMjkyMDY4M2UxYzk2Zjk1NDEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1NzM5IiA6IGZlYXR1cmVfZ3JvdXBfMDVlMmRiYmZjZDQ0NGUzZTk3NGM2MzUzODk5ZTcwYjEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1ODc1IiA6IGZlYXR1cmVfZ3JvdXBfYTlkMDFkYWQxMDJmNDZlY2EzNDU5NjVkMjFjZWU4YjAsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2Mjg5IiA6IGZlYXR1cmVfZ3JvdXBfNTA1MjRiN2FhNDEwNDE1NDk0NGJmMmNlOTQ3MTU3ZDAsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2NDE2IiA6IGZlYXR1cmVfZ3JvdXBfNzNhZWZhM2Q2ZDc3NGQ3YTg0ZWI3ZDVkOTkwNjYxMzgsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0MDY3IiA6IGZlYXR1cmVfZ3JvdXBfOTY1NzcwZDYzZTYwNDBjYjg3NDc1NTAxY2U2ZDYzZjAsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0MTc4IiA6IGZlYXR1cmVfZ3JvdXBfY2U2MDNhNzQ2ZDdhNDA5Y2JhNmExYjlhOGY0ODZkMDMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3ODQyIiA6IGZlYXR1cmVfZ3JvdXBfOTUzMjJhOTU0NGI2NDZhODkwZThkNjMyMjc1MjViMjYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3OTYzIiA6IGZlYXR1cmVfZ3JvdXBfZWQyMmRmZTJjNjM4NDRlYWFkYzZmYTdiNzA3YzljNmQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwNjQzIiA6IGZlYXR1cmVfZ3JvdXBfMWY5ZTNiOTNiOWU5NDJkZThjYTI2NDNmYTU0OWMwYzUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwODY5IiA6IGZlYXR1cmVfZ3JvdXBfZjNhZWFlYTczMjg1NGRkNWExNmE0YTdmNzdiNWZiNDAsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3NDY5IiA6IGZlYXR1cmVfZ3JvdXBfYjI4OTNlY2VhZDQyNGM0YmFkMjY0MzZkOWZhYzY2NzcsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3NTI5IiA6IGZlYXR1cmVfZ3JvdXBfMTcwNDliZWM3ZmUzNGExNWI4Njk4ODA4MDY4NGQwMDMsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEyNzk2IiA6IGZlYXR1cmVfZ3JvdXBfNTM5ZDhiZjgzM2RlNGE3NDg0YTM4ZGUxMzc1NTVkMjksCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE0OTM5IiA6IGZlYXR1cmVfZ3JvdXBfYTBmMzMxNzkzMmQzNGUxM2JiNmU2Mjg1M2E3NDQ1MDYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE1MDgwIiA6IGZlYXR1cmVfZ3JvdXBfNDMyNjhiYmFjNmI0NDhiMGJhMGRhYzRhZTRiNmJhMjUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI0NTUxIiA6IGZlYXR1cmVfZ3JvdXBfMTVlNTNlZTY2MDg3NGY5OGE1NTFmMDBlYmY1ZTdlYTIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDI0NjM0IiA6IGZlYXR1cmVfZ3JvdXBfMmFmMmYyNGQ1MjdkNDM3YjhhZjRiYTFlNGI4OGE2NGEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwMjY2IiA6IGZlYXR1cmVfZ3JvdXBfNzZjMDg0NGMxZGI5NDRmNDg5ZDZhNDFiY2QwOGIyOGYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwNDExIiA6IGZlYXR1cmVfZ3JvdXBfZjJmYmEzNjlkNmVhNGEzMTgyMjgzZDQxZmIzYWQyNjUsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2NjI4IiA6IGZlYXR1cmVfZ3JvdXBfYjg3NjlkZmYzNDY0NDBiOWExOTQ4ODM3YmI5NDg5NjIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA2ODE1IiA6IGZlYXR1cmVfZ3JvdXBfZmU0MGVmZTI1MzI5NGU5Mzg0MDNmYzBiNDNmNzRhNTksCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA5OTc2IiA6IGZlYXR1cmVfZ3JvdXBfNDBmNTE4NWIxNmRkNDY4Yzk1M2I2OTFhMGFlM2YwYWEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDEwMTAwIiA6IGZlYXR1cmVfZ3JvdXBfNTBhMGFhMjQyYjIyNGY0Yzk3ZjE1MjMwYThkMjMyMzQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExMjI2IiA6IGZlYXR1cmVfZ3JvdXBfZTlmMmJhYTEzZGFiNGVmNThjZGFhMTc0MTZlMGNlNTYsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDExNTA4IiA6IGZlYXR1cmVfZ3JvdXBfYjEyZmFlZDA0NGRjNDVmZmJhMDRkNzg2MmU0MjkyODEsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3MDI2IiA6IGZlYXR1cmVfZ3JvdXBfZjA2NzFiNWY3Zjk3NGE2ZGE3MTEwNDQ4MDc2MjNiYTIsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDA3MTM4IiA6IGZlYXR1cmVfZ3JvdXBfMDM0NTk2Yzg2NmYwNGVjOWEwNTJkYTcxMmVhOGE2ZDQsCiAgICAgICAgICAgICAgICAgICAgIlRyaXAgNDE2MDg4IiA6IGZlYXR1cmVfZ3JvdXBfOThmOGFlNGNmMTM2NGI2Njg3NmQ4NDI1ZmM0ZTU2Y2EsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgICAgICBMLmNvbnRyb2wubGF5ZXJzKAogICAgICAgICAgICAgICAgbGF5ZXJfY29udHJvbF80ZGUyZDlkYWY1ZGQ0NzIzYmQ1YzZjYWJjZmQ0MDdhNS5iYXNlX2xheWVycywKICAgICAgICAgICAgICAgIGxheWVyX2NvbnRyb2xfNGRlMmQ5ZGFmNWRkNDcyM2JkNWM2Y2FiY2ZkNDA3YTUub3ZlcmxheXMsCiAgICAgICAgICAgICAgICB7ImF1dG9aSW5kZXgiOiB0cnVlLCAiY29sbGFwc2VkIjogdHJ1ZSwgInBvc2l0aW9uIjogInRvcHJpZ2h0In0KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYTQyOWNjMDU3ZTc0NDUwMThlZjg1MTcwNGQzZmI1NmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIG1hcF9hNDI5Y2MwNTdlNzQ0NTAxOGVmODUxNzA0ZDNmYjU2Yi5maXRCb3VuZHMoCiAgICAgICAgICAgICAgICBbWzQzLjIyNjM3MDk4ODI1NDUxLCAtMi45NzQ5NDk2OTQyNTQ3MjUzXSwgWzQzLjI4NDA1NjE2NjQxNzU3LCAtMi44OTY1MDYxMTY2OTM3NDRdXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x1c6263470c8>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.map_trips(\n",
    "    feed.trips.groupby('route_id').first().trip_id.head(50)\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Frequency conversion currently work only for one specific service and date, and on one given time period.  \n",
    "It computes the average headway over this time period."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Restrict to one date and merge services"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "feed = feed.restrict(dates=['20191210'])\n",
    "feed.group_services()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             82\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes            124\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Build simplified patterns by clustering stops"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "feed.build_stop_clusters(distance_threshold=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "N stops: 498\n",
      "N clusters: 165\n"
     ]
    }
   ],
   "source": [
    "print('N stops:', len(feed.stops))\n",
    "print('N clusters:', len(feed.stops.cluster_id.unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "feed.build_patterns(on='cluster_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "N trips: 3297\n",
      "N patterns: 124\n",
      "N routes: 82\n"
     ]
    }
   ],
   "source": [
    "print('N trips:', len(feed.trips))\n",
    "print('N patterns:', len(feed.trips.pattern_id.unique()))\n",
    "print('N routes:', len(feed.trips.route_id.unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             82\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes            124\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Convert to frequencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>arrival_time</th>\n",
       "      <th>departure_time</th>\n",
       "      <th>stop_id</th>\n",
       "      <th>stop_sequence</th>\n",
       "      <th>stop_headsign</th>\n",
       "      <th>pickup_type</th>\n",
       "      <th>drop_off_type</th>\n",
       "      <th>shape_dist_traveled</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>406305</td>\n",
       "      <td>06:15:00</td>\n",
       "      <td>06:15:00</td>\n",
       "      <td>5405</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>406305</td>\n",
       "      <td>06:17:00</td>\n",
       "      <td>06:17:00</td>\n",
       "      <td>5106</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>406305</td>\n",
       "      <td>06:21:00</td>\n",
       "      <td>06:21:00</td>\n",
       "      <td>5110</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>406305</td>\n",
       "      <td>06:23:00</td>\n",
       "      <td>06:23:00</td>\n",
       "      <td>2108</td>\n",
       "      <td>4</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>406305</td>\n",
       "      <td>06:24:00</td>\n",
       "      <td>06:24:00</td>\n",
       "      <td>2104</td>\n",
       "      <td>5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57134</th>\n",
       "      <td>436376</td>\n",
       "      <td>14:03:00</td>\n",
       "      <td>14:03:00</td>\n",
       "      <td>5101</td>\n",
       "      <td>8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57135</th>\n",
       "      <td>436376</td>\n",
       "      <td>14:08:00</td>\n",
       "      <td>14:08:00</td>\n",
       "      <td>5704</td>\n",
       "      <td>9</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57136</th>\n",
       "      <td>436376</td>\n",
       "      <td>14:11:00</td>\n",
       "      <td>14:11:00</td>\n",
       "      <td>5601</td>\n",
       "      <td>10</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57137</th>\n",
       "      <td>436376</td>\n",
       "      <td>14:13:00</td>\n",
       "      <td>14:13:00</td>\n",
       "      <td>5701</td>\n",
       "      <td>11</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57138</th>\n",
       "      <td>436376</td>\n",
       "      <td>14:15:00</td>\n",
       "      <td>14:15:00</td>\n",
       "      <td>5405</td>\n",
       "      <td>12</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>57139 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      trip_id arrival_time departure_time stop_id  stop_sequence  \\\n",
       "0      406305     06:15:00       06:15:00    5405              1   \n",
       "1      406305     06:17:00       06:17:00    5106              2   \n",
       "2      406305     06:21:00       06:21:00    5110              3   \n",
       "3      406305     06:23:00       06:23:00    2108              4   \n",
       "4      406305     06:24:00       06:24:00    2104              5   \n",
       "...       ...          ...            ...     ...            ...   \n",
       "57134  436376     14:03:00       14:03:00    5101              8   \n",
       "57135  436376     14:08:00       14:08:00    5704              9   \n",
       "57136  436376     14:11:00       14:11:00    5601             10   \n",
       "57137  436376     14:13:00       14:13:00    5701             11   \n",
       "57138  436376     14:15:00       14:15:00    5405             12   \n",
       "\n",
       "      stop_headsign  pickup_type  drop_off_type  shape_dist_traveled  \n",
       "0               NaN            0              0                  NaN  \n",
       "1               NaN            0              0                  NaN  \n",
       "2               NaN            0              0                  NaN  \n",
       "3               NaN            0              0                  NaN  \n",
       "4               NaN            0              0                  NaN  \n",
       "...             ...          ...            ...                  ...  \n",
       "57134           NaN            0              0                  NaN  \n",
       "57135           NaN            0              0                  NaN  \n",
       "57136           NaN            0              0                  NaN  \n",
       "57137           NaN            0              0                  NaN  \n",
       "57138           NaN            0              0                  NaN  \n",
       "\n",
       "[57139 rows x 9 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed.stop_times"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████████████████████████████████████████████████████████████████████████████| 75/75 [00:00<00:00, 79.03it/s]\n"
     ]
    }
   ],
   "source": [
    "time_range = ['08:00:00', '10:00:00']  # time format must be HH:MM:SS\n",
    "feed_f = feed.convert_to_frequencies(time_range=time_range)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'feed' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-1-483948cecbee>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mfeed_f\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfeed\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconvert_to_frequencies\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtime_range\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtime_range\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'feed' is not defined"
     ]
    }
   ],
   "source": [
    "feed_f = feed.convert_to_frequencies(time_range=time_range)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             67\n",
       "6         num_trips             75\n",
       "7         num_stops            495\n",
       "8        num_shapes             75\n",
       "9   num_frequencies             75"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed_f.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Build nodes and links"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "feed_f.build_links_and_nodes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>stop_id</th>\n",
       "      <td>2201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_code</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_name</th>\n",
       "      <td>Anselma de Salces (2)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_desc</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>zone_id</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>stop_url</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>location_type</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cluster_id</th>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geometry</th>\n",
       "      <td>POINT (506258.4033893289 14790384.01825237)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         0\n",
       "stop_id                                               2201\n",
       "stop_code                                              NaN\n",
       "stop_name                            Anselma de Salces (2)\n",
       "stop_desc                                              NaN\n",
       "zone_id                                                NaN\n",
       "stop_url                                               NaN\n",
       "location_type                                          NaN\n",
       "cluster_id                                              85\n",
       "geometry       POINT (506258.4033893289 14790384.01825237)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed_f.nodes.head(1).T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>index</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>1604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trip_id</th>\n",
       "      <td>189_0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>link_sequence</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>departure_time</th>\n",
       "      <td>27900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>1605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival_time</th>\n",
       "      <td>27960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>headway</th>\n",
       "      <td>900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>pattern_id</th>\n",
       "      <td>189_0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_id</th>\n",
       "      <td>189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>service_id</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trip_headsign</th>\n",
       "      <td>Plaza Biribila</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>direction_id</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>shape_id</th>\n",
       "      <td>shape_009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>agency_id</th>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_short_name</th>\n",
       "      <td>01_IDA</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_long_name</th>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_desc</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_type</th>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_url</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>route_color</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>geometry</th>\n",
       "      <td>LINESTRING (504266.4483006593 14791400.9602043...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                                  0\n",
       "index                                                             0\n",
       "a                                                              1604\n",
       "trip_id                                                       189_0\n",
       "link_sequence                                                     1\n",
       "departure_time                                                27900\n",
       "b                                                              1605\n",
       "arrival_time                                                  27960\n",
       "time                                                             60\n",
       "headway                                                         900\n",
       "pattern_id                                                    189_0\n",
       "route_id                                                        189\n",
       "service_id                                                        1\n",
       "trip_headsign                                        Plaza Biribila\n",
       "direction_id                                                    NaN\n",
       "shape_id                                                  shape_009\n",
       "agency_id                                                        27\n",
       "route_short_name                                             01_IDA\n",
       "route_long_name                          Arangoiti - Plaza Biribila\n",
       "route_desc                                                      NaN\n",
       "route_type                                                        3\n",
       "route_url                                                       NaN\n",
       "route_color                                                     NaN\n",
       "geometry          LINESTRING (504266.4483006593 14791400.9602043..."
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed_f.links.head(1).T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## All in one\n",
    "While we recommand to build the nodes and links gradually by exploring the GTFS data first, it is also possible to do it in one line."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20200310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>3297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20200310\n",
       "5        num_routes             92\n",
       "6         num_trips           3297\n",
       "7         num_stops            498\n",
       "8        num_shapes              0\n",
       "9   num_frequencies              0"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feed = importer.GtfsImporter(path=data + r'bilbao.zip', dist_units='m')\n",
    "feed.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Restricting to date…\n",
      "Grouping services…\n",
      "Cleaning…\n",
      "Clustering stops…\n",
      "Building patterns…\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  8%|██████▋                                                                            | 6/75 [00:00<00:01, 58.81it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Converting to frequencies…\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████████████████████████████████████████████████████████████████████████████| 75/75 [00:00<00:00, 75.68it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Building links and nodes…\n"
     ]
    }
   ],
   "source": [
    "imp = feed.build(\n",
    "    date='20191210',\n",
    "    time_range=['08:00:00', '10:00:00'],\n",
    "    cluster_distance_threshold=300 # by default: None and no clustering\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>indicator</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>agencies</td>\n",
       "      <td>[Bilbobus]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>running_services</td>\n",
       "      <td>[1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>timezone</td>\n",
       "      <td>Europe/Madrid</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>start_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>end_date</td>\n",
       "      <td>20191210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>num_routes</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>num_trips</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>num_stops</td>\n",
       "      <td>495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>num_shapes</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>num_frequencies</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          indicator          value\n",
       "0          agencies     [Bilbobus]\n",
       "1  running_services            [1]\n",
       "2          timezone  Europe/Madrid\n",
       "3        start_date       20191210\n",
       "4          end_date       20191210\n",
       "5        num_routes             67\n",
       "6         num_trips             75\n",
       "7         num_stops            495\n",
       "8        num_shapes              0\n",
       "9   num_frequencies             75"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imp.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>a</th>\n",
       "      <th>trip_id</th>\n",
       "      <th>link_sequence</th>\n",
       "      <th>departure_time</th>\n",
       "      <th>b</th>\n",
       "      <th>arrival_time</th>\n",
       "      <th>time</th>\n",
       "      <th>headway</th>\n",
       "      <th>pattern_id</th>\n",
       "      <th>...</th>\n",
       "      <th>direction_id</th>\n",
       "      <th>shape_id</th>\n",
       "      <th>agency_id</th>\n",
       "      <th>route_short_name</th>\n",
       "      <th>route_long_name</th>\n",
       "      <th>route_desc</th>\n",
       "      <th>route_type</th>\n",
       "      <th>route_url</th>\n",
       "      <th>route_color</th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1604</td>\n",
       "      <td>189_0</td>\n",
       "      <td>1</td>\n",
       "      <td>27900.0</td>\n",
       "      <td>1605</td>\n",
       "      <td>27960.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (504266.448 14791400.960, 504088.19...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1605</td>\n",
       "      <td>189_0</td>\n",
       "      <td>2</td>\n",
       "      <td>27960.0</td>\n",
       "      <td>1702</td>\n",
       "      <td>28140.0</td>\n",
       "      <td>180.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (504088.197 14791399.303, 503796.02...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>1702</td>\n",
       "      <td>189_0</td>\n",
       "      <td>3</td>\n",
       "      <td>28140.0</td>\n",
       "      <td>1703</td>\n",
       "      <td>28200.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (503796.023 14791563.341, 503745.17...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>1703</td>\n",
       "      <td>189_0</td>\n",
       "      <td>4</td>\n",
       "      <td>28200.0</td>\n",
       "      <td>1306</td>\n",
       "      <td>28440.0</td>\n",
       "      <td>240.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (503745.174 14791526.405, 503618.05...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>1306</td>\n",
       "      <td>189_0</td>\n",
       "      <td>5</td>\n",
       "      <td>28440.0</td>\n",
       "      <td>1414</td>\n",
       "      <td>28680.0</td>\n",
       "      <td>240.0</td>\n",
       "      <td>900.0</td>\n",
       "      <td>189_0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27</td>\n",
       "      <td>01_IDA</td>\n",
       "      <td>Arangoiti - Plaza Biribila</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LINESTRING (503618.056 14791226.062, 504049.58...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   index     a trip_id  link_sequence  departure_time     b  arrival_time  \\\n",
       "0      0  1604   189_0              1         27900.0  1605       27960.0   \n",
       "1      1  1605   189_0              2         27960.0  1702       28140.0   \n",
       "2      2  1702   189_0              3         28140.0  1703       28200.0   \n",
       "3      3  1703   189_0              4         28200.0  1306       28440.0   \n",
       "4      4  1306   189_0              5         28440.0  1414       28680.0   \n",
       "\n",
       "    time  headway pattern_id  ... direction_id shape_id agency_id  \\\n",
       "0   60.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "1  180.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "2   60.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "3  240.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "4  240.0    900.0      189_0  ...          NaN      NaN        27   \n",
       "\n",
       "   route_short_name             route_long_name route_desc route_type  \\\n",
       "0            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "1            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "2            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "3            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "4            01_IDA  Arangoiti - Plaza Biribila        NaN          3   \n",
       "\n",
       "  route_url route_color                                           geometry  \n",
       "0       NaN         NaN  LINESTRING (504266.448 14791400.960, 504088.19...  \n",
       "1       NaN         NaN  LINESTRING (504088.197 14791399.303, 503796.02...  \n",
       "2       NaN         NaN  LINESTRING (503796.023 14791563.341, 503745.17...  \n",
       "3       NaN         NaN  LINESTRING (503745.174 14791526.405, 503618.05...  \n",
       "4       NaN         NaN  LINESTRING (503618.056 14791226.062, 504049.58...  \n",
       "\n",
       "[5 rows x 23 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imp.links.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>stop_id</th>\n",
       "      <th>stop_code</th>\n",
       "      <th>stop_name</th>\n",
       "      <th>stop_desc</th>\n",
       "      <th>zone_id</th>\n",
       "      <th>stop_url</th>\n",
       "      <th>location_type</th>\n",
       "      <th>cluster_id</th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2201</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Anselma de Salces (2)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>85</td>\n",
       "      <td>POINT (506258.403 14790384.018)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2417</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Trauko (14)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10</td>\n",
       "      <td>POINT (506528.037 14790435.054)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Kepa Enbeitia \"Urretxindorra\"</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>157</td>\n",
       "      <td>POINT (508092.006 14789626.524)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6209</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Gregorio la Revilla 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>56</td>\n",
       "      <td>POINT (504935.494 14790091.282)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6210</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Gregorio la Revilla 17</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>79</td>\n",
       "      <td>POINT (504867.070 14789866.493)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  stop_id stop_code                      stop_name stop_desc zone_id stop_url  \\\n",
       "0    2201       NaN          Anselma de Salces (2)       NaN     NaN      NaN   \n",
       "1    2417       NaN                    Trauko (14)       NaN     NaN      NaN   \n",
       "2    3103       NaN  Kepa Enbeitia \"Urretxindorra\"       NaN     NaN      NaN   \n",
       "3    6209       NaN          Gregorio la Revilla 1       NaN     NaN      NaN   \n",
       "4    6210       NaN         Gregorio la Revilla 17       NaN     NaN      NaN   \n",
       "\n",
       "   location_type  cluster_id                         geometry  \n",
       "0            NaN          85  POINT (506258.403 14790384.018)  \n",
       "1            NaN          10  POINT (506528.037 14790435.054)  \n",
       "2            NaN         157  POINT (508092.006 14789626.524)  \n",
       "3            NaN          56  POINT (504935.494 14790091.282)  \n",
       "4            NaN          79  POINT (504867.070 14789866.493)  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imp.nodes.head()"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda env:quetzal_env]",
   "language": "python",
   "name": "conda-env-quetzal_env-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
